我想挑出數組中出現奇數次的元素。我從堆中聲明瞭大小爲INT_MAX的數組,並消除了分段錯誤,但現在它正在進行中。使用相同的算法可以做什麼?爲什麼這段代碼超出了時間限制?
/* C++ code to find out the element that occurs odd number of times, given there is only one such element in the array */
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, i;
cin >> n;
int arr[n];
for (i = 0; i < n; i++)
cin >> arr[i];
int* a = new int[INT_MAX]; // declared a dynamic array
fill_n(a, INT_MAX, 0); //initialised to 0
for (i = 0; i < n; i++) {
a[arr[i]]++; // for every particular value, that corresponding index value increases
}
for (i = 0; i < n; i++) {
if(a[arr[i]] % 2 == 1) { //if that corresponding index value is odd, that's the answer
cout << arr[i];
break;
}
}
delete[] a;
return 0;
}
什麼是操作系統和編譯器? –
你需要找到一種不同的方法。提示:當你對自己的數字進行異或時會發生什麼? – NathanOliver
這裏有一個更好的問題:你爲什麼想要分配'INT_MAX'元素? –