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 ของอาร์เรย์เวกเตอร์พร้อมองค์ประกอบ

  • อาร์เรย์เวกเตอร์จำนวนเต็ม RemoveDuplicates(vector&arr, int size) ซึ่งรับอาร์เรย์และขนาดเป็นอินพุต

  • อาร์เรย์จำนวนเต็มที่เราใช้ในการตรวจจับและตรวจสอบว่าองค์ประกอบปัจจุบันของเรามีการเยี่ยมชมหรือไม่ หากมีการเยี่ยมชมองค์ประกอบใด ๆ (เช่น '1') ในอาร์เรย์ขณะแทรก เราจะไม่ผลักองค์ประกอบนั้นเข้าไปในเวกเตอร์ มิฉะนั้นจะผลักองค์ประกอบในอาร์เรย์เวกเตอร์

  • เวกเตอร์ผลลัพธ์จะมีเฉพาะจำนวนเฉพาะเฉพาะ

ตัวอย่าง

#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<<removeDuplicates(arr,N)<<endl;
   }
   return 0;
}

ผลลัพธ์

หากเราจะเรียกใช้โค้ดข้างต้น มันจะพิมพ์ผลลัพธ์เป็น,

2 3 5 7

หากเราลบรายการที่ซ้ำกัน ผลลัพธ์จะเป็น 2 3 5 7