287. 尋找重複數

287. 尋找重複數

給定一個包含 n + 1 個整數的數組 nums,其數字都在 1 到 之間(包括 1 和 n),可知至少存在一個重複的整數。假設只有一個重複的整數,找出這個重複的數。

示例 1:

輸入: [1,3,4,2,2]

輸出: 2

示例 2:

輸入: [3,1,3,4,2]

輸出: 3

說明:

  1. 不能更改原數組(假設數組是隻讀的)。
  2. 只能使用額外的 O(1) 的空間。
  3. 時間複雜度小於 O(n2) 。

 

二.自我探尋
思路:循環一遍數組,出現的數t,將原數組nums[t-1]變成負數,代表出現了一次,若已經是負數,代表出現了兩次,返回該數即可。

時間複雜度O(n)空間複雜度O(1)

代碼:public int findDuplicate(int[] nums) {

           for(int i=0;i<nums.length;i++)

           {

             int t=Math.abs(nums[i])-1;

             if(nums[t]<0)

             {

                return t;

             }

             else

             {

                nums[t]=-nums[t];

             }

           }

           return 0;

       }

評價:

三.網絡學習過程

 

四.Python實現

 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章