題目
題目難度:簡單
給定一個整數數組,判斷是否存在重複元素。
如果任意一值在數組中出現至少兩次,函數返回 true 。如果數組中每個元素都不相同,則返回 false 。
示例1:
輸入: [1,2,3,1]
輸出: true
示例 2:
輸入: [1,2,3,4]
輸出: false
解題
方法一:快慢指針
我是這樣想的,先進行排序,如果存在相同元素的話,那麼前一個元素就會和後一個元素相同,這樣就把問題轉換爲第二天的去除相同元素的問題了
class Solution {
public boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);
int fast = 1;
int slow = 0;
for(; fast < nums.length ; fast++){
if(nums[slow++] == nums[fast]){
return true;
}
}
return false;
}
}
方法二:哈希
用set集合,最主要的就是:Set集合不允許包含相同的元素,如果試圖把兩個相同元素加入同一個Set集合中,則添加操作失敗,add()方法返回false,且新元素不會被加入。
JAVA中的Set函數
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int n : nums) {
if (!set.add(n)) {
return true;
}
}
return false;
}
}