劍指 offer之數組中重複的數字_java

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

解題思路:
由於要求找出數組中任意一個重複的數字,所以只需要定義一個set集合,如果集合中包含這個元素,就找到了目標數,返回即可;整個數組遍歷完,還沒有重複元素,返回false;
ps:注意代碼的魯棒性

代碼實現:

import java.util.*;
public class Solution {
    public boolean duplicate(int numbers[],int length,int [] duplication) {
        //代碼的魯棒性
        if(length==0){
        //數組爲空
            duplication[0]=-1;
            return false;
        }
        Set<Integer> st=new HashSet<>();
		for(int num:numbers) {
			if(st.contains(num)) {
				duplication[0]=num;
				return true;
			}else {
				st.add(num);
			}
		}
		//沒有找到
		duplication[0]=-1;
        return false;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章