题目信息
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。