原地置换法寻找数组中重复的数
生活随笔
收集整理的這篇文章主要介紹了
原地置换法寻找数组中重复的数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目描述
- 代碼實現
題目描述
在一個長度為 n 的數組 nums 里的所有數字都在 0~n-1 的范圍內。數組中某些數字是重復的,但不知道有幾個數字重復了,也不知道每個數字重復了幾次。請找出數組中任意一個重復的數字。
輸入:
[2, 3, 1, 0, 2, 5, 3]
輸出:2 或 3
限制:
2 <= n <= 100000
代碼實現
如果下標 i 存儲的是 j,下標 j 中存儲的還是 j,則說明 j 重復出現。
int findRepeatNumber(vector<int>& nums){for(int i=0; i < nums.size(); i++){while(nums[i] != i){ // 下標i中存儲的不是i,而是jint temp = nums[i];if(temp == nums[temp]){ // 下標j中存儲的是jreturn temp; // throw repeat number}else{ // 下標j中存儲的也不是jswap(nums[i], nums[temp]); // 交換下標j和下標i中的值,讓下標j中是j}}}return -1; // find't repeat number }
總結
以上是生活随笔為你收集整理的原地置换法寻找数组中重复的数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle推送短信,ORACLE 10
- 下一篇: 俄罗斯农民乘法 | 快速乘