LeetCode 287. 寻找重复数
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 287. 寻找重复数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給定一個(gè)包含?n + 1 個(gè)整數(shù)的數(shù)組?nums,其數(shù)字都在 1 到 n?之間(包括 1 和 n),可知至少存在一個(gè)重復(fù)的整數(shù)。假設(shè)只有一個(gè)重復(fù)的整數(shù),找出這個(gè)重復(fù)的數(shù)。
示例 1:
輸入: [1,3,4,2,2]
輸出: 2
示例 2:
輸入: [3,1,3,4,2]
輸出: 3
說(shuō)明:
不能更改原數(shù)組(假設(shè)數(shù)組是只讀的)。
只能使用額外的 O(1) 的空間。
時(shí)間復(fù)雜度小于 O(n2) 。
數(shù)組中只有一個(gè)重復(fù)的數(shù)字,但它可能不止重復(fù)出現(xiàn)一次。
算法:抽屜原理。結(jié)論是顯然的,我們只需要把對(duì)應(yīng)位置上的數(shù)放到對(duì)應(yīng)位置上即可。如果發(fā)現(xiàn)位置不對(duì)等,那么這個(gè)數(shù)就是我們要找的。
class Solution { public:int findDuplicate(vector<int>& nums) {int n=nums.size(),i;for(i=0;i<n;i++){while(nums[i]!=i&&nums[i]!=nums[nums[i]])swap(nums[i],nums[nums[i]]);if(nums[i]!=i&&nums[i]==nums[nums[i]])break;}return nums[i];} };?
轉(zhuǎn)載于:https://www.cnblogs.com/programyang/p/11154746.html
總結(jié)
以上是生活随笔為你收集整理的LeetCode 287. 寻找重复数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 55种网页常用小技巧(转载)
- 下一篇: 分层在深一步学习