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

หาองค์ประกอบที่ต่างออกไปเพียงอย่างเดียวในอาร์เรย์ด้วย C++


ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ขนาด n ภารกิจของเราคือ หาองค์ประกอบที่ต่างออกไปเพียงอย่างเดียวในอาร์เรย์

มีเพียงสองประเภทขององค์ประกอบที่แตกต่างกันในอาร์เรย์ ทุกองค์ประกอบเหมือนกันยกเว้นหนึ่ง

มาดูตัวอย่างเพื่อเข้าใจปัญหา

อินพุต

arr[] = {1, 1, 1, 2, 1, 1, 1, 1}

เอาต์พุต

2

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

วิธีแก้ปัญหาแบบง่ายในการแก้ปัญหา เราต้องเดินทางผ่านอาร์เรย์และหาองค์ประกอบที่แตกต่างจากองค์ประกอบอื่นๆ ของอาร์เรย์ วิธีนี้ต้องการความซับซ้อนของเวลา O(N2)

อีกวิธีหนึ่งในการแก้ปัญหาใน O(N) คือการใช้ตารางแฮชเพื่อเก็บองค์ประกอบและความถี่ของการเกิดขึ้น และพิมพ์ค่าที่มีความถี่เกิดขึ้นเพียงครั้งเดียว

ตัวอย่าง

โปรแกรมสาธิตการทำงานของวิธีแก้ปัญหาของเรา

#include <iostream> using namespace std; int findDiffElementArray(int arr[], int n){    if (n == 1)       return -1;    if (n == 2)       return arr[0];    if (arr[0] == arr[1] && arr[0] != arr[2])       return arr[2];    if (arr[0] == arr[2] && arr[0] != arr[1])       return arr[1];    if (arr[1] == arr[2] && arr[0] != arr[1])       return arr[0];    for (int i = 3; i < n; i++)       if (arr[i] != arr[i - 1])          return arr[i];          return -1; } int main(){    int arr[] = { 5, 5, 1, 5, 5, 5, 5};    int n = sizeof(arr) / sizeof(arr[0]);    cout<<"The different element in the array is "<<findDiffElementArray(arr, n);    return 0; }

เอาต์พุต

The different element in the array is 1