สมมติว่าเรามีอาร์เรย์ขนาด 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