題目:數組中重複的數字
題目描述
在一個長度爲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;
}
}