題目信息
給定一個整數數組,判斷是否存在重復元素。
如果存在一值在數組中出現至少兩次,函數返回 true 。如果數組中每個元素都不相同,則返回 false 。
示例 1:
輸入: [1,2,3,1]
輸出: true
示例 2:
輸入: [1,2,3,4]
輸出: false
解題思路
- 暴力破解
- 無效操作分析
- 優化方法
- 考慮邊界
- 編碼實現
1. 利用HashMap特點,get(nums[i])如果返回值,則證明出現過,返回true,沒有則put(nums[i], nums[i])存入,時間復雜度O(n),空間復雜度O(n)。
2. 使用HashSet的add,代碼更為簡化,add失敗會返回false
3. 不需要index
,沒必要創建i
代碼
class Solution {
public boolean containsDuplicate(int[] nums) {
if (nums == null || nums.length == 0) {
return false;
}
int length = nums.length;
Set<Integer> temp = new HashSet<>();
for (int num: nums) {
if (!temp.add(num)) {
return true;
}
}
return false;
}
}
題目來源:力扣(LeetCode)
題目鏈接:https://leetcode-cn.com/problems/contains-duplicate
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。