LeetCode 217. 存在重复元素
题目描述
思路分析
解法一:哈希集合判重(推荐)
核心思路:
- 遍历数组,用哈希集合记录已经出现过的元素。
- 若某元素已存在于集合中,直接返回
true。- 遍历结束仍未重复则返回
false。
复杂度分析:
- 时间复杂度:O(n),其中 n 表示数组长度。
- 空间复杂度:O(n),用于哈希集合。
import java.util.HashSet;
import java.util.Set;
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> seen = new HashSet<>();
for (int num : nums) {
if (seen.contains(num)) {
return true;
}
seen.add(num);
}
return false;
}
}
func containsDuplicate(nums []int) bool {
seen := make(map[int]struct{})
for _, v := range nums {
if _, ok := seen[v]; ok {
return true
}
seen[v] = struct{}{}
}
return false
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 219. 存在重复元素 II | 简单 | 哈希表 |
| 220. 存在重复元素 III | 困难 | 哈希表 |
| 1. 两数之和 | 简单 | 哈希表 |
| 349. 两个数组的交集 | 简单 | 哈希表 |
| 242. 有效的字母异位词 | 简单 | 哈希表 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!