Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เขียนโปรแกรม C++ เพื่อลบค่าซ้ำจากอาร์เรย์ของจำนวนเฉพาะที่กำหนด

สมมติว่าเรามีอาร์เรย์ขนาด N ที่ประกอบด้วยจำนวนเฉพาะทั้งหมด งานคือหาค่าซ้ำในอาร์เรย์ที่กำหนดและลบพวกมัน ตัวอย่างเช่น

ตัวอย่างอินพุต 1

N = 8, arr[] = {2, 2, 2, 3, 3, 3, 5, 7}

เอาต์พุต

2 3 5 7

คำอธิบาย

ในอาร์เรย์ของจำนวนเฉพาะที่กำหนดมีค่าซ้ำของ '2' และ '3' หลังจากลบค่าซ้ำ เอาต์พุตจะเป็น 2 3 5 7

ตัวอย่างอินพุต 2

N = 5, arr[] = {3, 2, 7, 5, 5}

เอาต์พุต

3 2 7 5

คำอธิบาย

ในอาร์เรย์ของจำนวนเฉพาะที่กำหนดมีค่าซ้ำของ '5' หลังจากลบค่าซ้ำ เอาต์พุตจะเป็น 3 2 7 5

วิธีการแก้ปัญหา

ในปัญหานี้ เราใช้อาร์เรย์ตัวเลขซึ่งจะตรวจสอบว่าตัวเลขถูกเยี่ยมชมในอาร์เรย์หรือไม่ หากองค์ประกอบอาร์เรย์ไม่ได้ถูกเยี่ยมชม ให้ทำให้เป็น '1' และแทรกเข้าไปในผลลัพธ์ มิฉะนั้นไม่ต้องแทรกองค์ประกอบนั้น

  • รับอินพุตขนาด N ของเวกเตอร์อาร์เรย์พร้อมองค์ประกอบ
  • ฟังก์ชัน integer vector array removeDuplicates(vector<int>& arr, int size) ซึ่งรับอาร์เรย์และขนาดเป็นอินพุต
  • อาร์เรย์จำนวนเต็มที่เราใช้เพื่อตรวจจับและยืนยันว่าองค์ประกอบปัจจุบันของเราถูกเยี่ยมชมแล้วหรือไม่ หากองค์ประกอบใดถูกเยี่ยมชม (คือ '1') ในอาร์เรย์ขณะแทรก เราจะไม่ push องค์ประกอบนั้นเข้าไปในเวกเตอร์ มิฉะนั้น push องค์ประกอบในเวกเตอร์อาร์เรย์
  • เวกเตอร์ผลลัพธ์จะมีเฉพาะจำนวนเฉพาะที่ไม่ซ้ำกัน

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

vector<int> removeDuplicates(vector<int> &arr, int size) {
    int num[100] = {0};
    vector<int> vec;
    for (int i = 0; i < size; i++) {
        if (num[arr[i]] == 0) {
            num[arr[i]] = 1;
            vec.push_back(arr[i]);
        }
    }
    return vec;
}

int main() {
    int N = 8;
    vector<int> arr = {2, 2, 2, 3, 3, 3, 5, 7};
    vector<int> answer = removeDuplicates(arr, N);
    for (int i = 0; i < answer.size(); i++) {
        cout << answer[i] << endl;
    }
    return 0;
}

ผลลัพธ์

ถ้าเราจะรันโค้ดด้านบน จะพิมพ์เอาต์พุตเป็น

2 3 5 7

ถ้าเราลบค่าซ้ำ เอาต์พุตจะเป็น 2 3 5 7