使用 C++ 查詢陣列中唯一不同的元素


在這個問題中,我們給定一個大小為 n 的 arr[] 陣列。我們的任務是找到陣列中唯一不同的元素

陣列中只有兩種不同型別的元素。除了一個之外,所有元素都相同。

讓我們舉個例子來理解這個問題,

輸入

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

輸出

2

解決方案方法

解決此問題的一個簡單方法是遍歷陣列並查詢與陣列其他元素不同的元素。這種方法需要 O(N2) 的時間複雜度。

另一種以 O(N) 的時間複雜度解決此問題的方法是使用雜湊表來儲存元素及其出現的頻率。並打印出現頻率為 1 的值。

示例

程式說明了我們解決方案的工作原理

#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

更新於: 2022 年 2 月 11 日

178 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.