官方題解給了個雙指標的方法,估計面試也不會,先不看了。
正常方法:
1.排序
2.用set或者直接在原vector上記錄出現的值
3.二分,這裡是對資料範圍2分。令n為vector長度,則所有資料都在1到n-1的範圍內。取le=1,ri=n-1,mi=n/2。然後遍歷整個vector,計算在[le,mi]或者[mi+1,ri]的範圍內出現的數字次數。比如計算[le,mi]範圍內數字出現的次數大於mi-le+1,說明[le,mi]範圍內的數字一定至少有乙個是不止出現一次的。
1class
solution 16}
17if(count<=right-mid+1)18
21else
2225}26
return
left;27}
28 };
287 尋找重複數
給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2 示例 2 輸入 3,1,3,4,2 輸出 3 說明 不能更改原陣列 假設陣列是唯讀的 只能...
287 尋找重複數
給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2示例 2 輸入 3,1,3,4,2 輸出 3說明 不能更改原陣列 假設陣列是唯讀的 只能使用...
287 尋找重複數
287.尋找重複數 給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。示例 1 輸入 1,3,4,2,2 輸出 2 示例 2 輸入 3,1,3,4,2 輸出 3 說明 不能更改原陣列 假...