在乙個長度為n+1的陣列裡所有的數字都在1-n的範圍內,所以陣列的中至少有乙個數字是重複的。請找出陣列中重複的數字,但是不可以修改陣列。
1.定義start和end,找到陣列的中間值middle
2.統計start到middle中count的數字,如果count大於middle-start+1,說明重複的數字在左半範圍,讓middle成為end
3.相反則middle成為start
4.當end等於start的時候count大於一返回start
#includeint countrange(const int*numbers,int len, int start, int end)
return count;
}int getdupliction(int* numbers,int len)
while(end >= start)//記住這個萬惡的等於號
else
}if(count > (middle - start + 1))
else
}return -1;
}int main()
; int sz = sizeof(arr)/sizeof(arr[0]);
getdupliction(arr,sz);
printf("%d",getdupliction(arr,sz));
return 0;
}
LeetCode 尋找重複數
給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重...
LeetCode 尋找重複數
給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2示例 2 輸入 3,1,3,4,2 輸出 3說明 不能更改原陣列 假設陣列是唯讀的 只能使用...
leetcode 尋找重複數
給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2示例 2 輸入 3,1,3,4,2 輸出 3說明 不能更改原陣列 假設陣列是唯讀的 只能使用...