這是一個大數據,其中包含1億個整數,但其中包含一個與其他相同整數不同的值,例如:1,1,1,1 ,1,1,1,42,1,1,1,1 ..但是,我不知道我的下面的代碼發生了什麼。如何在一串數字中找到一個不同的值
int main() {
vector <int> data;
cout << "Enter same numbers " << " and a different one(negative to be end) :" << endl;
int value;
while (cin >> value && value > 0) {
data.push_back(value);
}
int unique_value;
int size = data.size();
if (data[0] != data[size - 1]) {
if (data[0] != data[2]) {
unique_value = data[0];
} else {
unique_value = data[size - 1];
}
cout << "found the unique number: " << unique_value << endl;
exit(0);
}
int low = 1;
int high = size - 2;
while (high > low) {
if (data[high] != data[low]) {
//其中必有一個是不同的,只要和data[0]就能得到結果
if (data[high] != data[0]) {
unique_value = data[high];
} else {
unique_value = data[low];
}
break;
}
}
if (high == low) {
unique_value = data[high];
}
cout << "found the unique number: " << unique_value << endl;
return 0;
}
BTW,你不需要存儲所有號碼 - 只是前一個和當前的一個,檢查它們在您閱讀的 –
你知道這些整數的上限?整數是否被排序? –
你的代碼是絕望的錯誤:即使你正確實現了它,二進制搜索也是行不通的(你沒有這樣做)。 – dasblinkenlight