ในปัญหานี้ เราได้รับ arr[] ขนาด n งานของเราคือ f ระบุองค์ประกอบที่แตกต่างกันเพียงรายการเดียวในอาร์เรย์ .
มีองค์ประกอบที่แตกต่างกันเพียงสองประเภทในอาร์เรย์ องค์ประกอบทั้งหมดเหมือนกันยกเว้นหนึ่งรายการ
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล
arr[] = {1, 1, 1, 2, 1, 1, 1, 1}
ผลผลิต
2
แนวทางการแก้ปัญหา
แนวทางง่ายๆ ในการแก้ปัญหาคือเราต้องสำรวจอาร์เรย์และค้นหาองค์ประกอบที่แตกต่างจากองค์ประกอบอื่นๆ ของอาร์เรย์ วิธีการนี้ต้องการความซับซ้อนของเวลาของ O(N 2 )
อีกวิธีในการแก้ปัญหาใน 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