給定一個整數數組,判斷是否存在重複元素。
如果任何值在數組中出現至少兩次,函數返回 true。如果數組中每個元素都不相同,則返回 false。
思路一:
排序然後遍歷,當和下一個相等,就輸出
思路二:
放入set,然後比較原數組長度和set的長度,相等就是沒重複
思路三:
循環,然後每次都去看這個數字之前有沒有和 這個數字相等的數。最終超時。
思路四(看別人的):
這種適用於計數。
利用HashMap 將數組的值當做key,而次數當做value,不過在這裏只要找到有重複的就返回true,只需要每次判斷多對應的鍵值存不存在值就行,如果 存在那麼肯定重複返回true,否則加入HashMap中。
代碼:自己的三種 實現:
public class ContainsDuplicate {
public boolean containsDuplicate_1(int[] nums) {
Arrays.sort(nums);
for (int i=0; i<nums.length-1; i++){
if (nums[i] == nums[i+1]){
return true;
}
}
return false;
}
public boolean containsDuplicate_2(int[] nums) {
HashSet<Integer> set = new HashSet();
List arr = Arrays.asList(nums);
set.addAll(arr);
if (arr.size()!=set.size()){
return true;
}
return false;
}
public boolean containsDuplicate_3(int[] nums) {
for (int i=0; i<nums.length; i++){
for (int j=i-1; j>=0; j--){
if (nums[i] == nums[j]){
return true;
}
}
}
return false;
}
}