數組中重複的數字(牛客網二十九)

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



import java.util.HashMap; 
import java.util.Iterator;
public class Solution {
    // Parameters:
    //    numbers:     an array of integers
    //    length:      the length of array numbers
    //    duplication: (Output) the duplicated number in the array number,length of duplication array is 1,so using duplication[0] = ? in implementation;
    //                  Here duplication like pointor in C/C++, duplication[0] equal *duplication in C/C++
    //    這裏要特別注意~返回任意重複的一個,賦值duplication[0]
    // Return value:       true if the input is valid, and there are some duplications in the array number
    //                     otherwise false
    public boolean duplicate(int numbers[],int length,int [] duplication) {
    
           HashMap<Integer,Integer> hm=new  HashMap<Integer,Integer>();
           if(length<=0)
               return false;
           for(int i=0;i<length;i++)
           {
               if(hm.containsKey(numbers[i]))
               {
                  int count= hm.get(numbers[i]) ;
                  count++;
                  hm.put(numbers[i],count);
               }
               else
               {
                  int count=1;
                  hm.put(numbers[i],count);
               }            
           }
          Iterator iter = hm.keySet().iterator();
          while (iter.hasNext()) {
              // 獲取key            
             int key = (int)iter.next();
              // 根據key,獲取value
              if(hm.get(key)>1)
              {
                 duplication[0]=key;
                 return true;
                
              }
             
         } 
              return false;
    }  
}


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