劍指Offer【3】:數組中重複的數字

題目描述

在一個長度爲n的數組裏的全部數字都在0到n-1的範圍內。 數組中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每一個數字重複幾回。請找出數組中任意一個重複的數字。 例如,若是輸入長度爲7的數組{2,3,1,0,2,5,3},那麼對應的輸出是第一個重複的數字2。數組

解題思路

從頭至尾掃描整個數組,掃描到下標爲i時,其值爲m,比較m是否等於i,若是是,接着掃描下一個數字;若是不是,將它與第m個數相比,若是它和第m個數字相等,就找到一個重複的數字。code

public static boolean Duplicate(int array[]){
        //判斷數組是否爲空
        /*if(array.length == 0){
            return false;
        }*/
        if(array == null || array.length<=0){
            return false;
        }
        
        for(int i=0;i<array.length;i++){
            if(array[i]>=array.length || array[i]<0){
                return false;
            }
        }
        for(int i=0;i<array.length;i++){
            while(i!=array[i]){
                if(array[i] == array[array[i]]){
                    System.out.println(array[i]);
                    
                    return true;
                }
                else{
                    int temp = array[i];
                    array[i] = array[array[i]];
                    array[temp] = temp;
                    
                }
            }
            
        }
        return false;
        
        
    }

參考:《劍指Offer》static

相關文章
相關標籤/搜索