使用 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
广告