1. 程式人生 > >[Leetcode] 287. 尋找重複數 java

[Leetcode] 287. 尋找重複數 java

 給定一個包含 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) 。
  4. 陣列中只有一個重複的數字,但它可能不止重複出現一次。
class Solution {
    public int findDuplicate(int[] nums) {//
        if(nums.length==0) return 0;
        Arrays.sort(nums);
        int i=0,j=nums.length-1;       
        int result=0;
        while(i<j){
            if(nums[i]==nums[i+1]){
                result=nums[i];
                break;
            } 
            else i++;
            if(nums[j]==nums[j-1]){
                result=nums[j];
                break;
            }
            else j--;
        }
        return result;
    }
}