LeetCode217-存在重复元素

题目链接

英文链接:https://leetcode.com/problems/contains-duplicate/

中文链接:https://leetcode-cn.com/problems/contains-duplicate/

题目详述

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

示例 1:

1
2
输入: [1,2,3,1]
输出: true

示例 2:

1
2
输入: [1,2,3,4]
输出: false

示例 3:

1
2
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

题目详解

方法一:先排序,再判重。

  • 时间复杂度:O(nlogn)。
  • 空间复杂度:O(1)。
1
2
3
4
5
6
7
8
9
10
11
12
public class LeetCode_00217 {

public boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);
for (int i = 1; i < nums.length; ++i) {
if (nums[i] == nums[i - 1]) {
return true;
}
}
return false;
}
}

方法二:运用 HashSet。

  • 时间复杂度:O(n)。
  • 空间复杂度:O(n)。
1
2
3
4
5
6
7
8
9
10
11
12
13
public class LeetCode_00217 {

public boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int num : nums) {
if (set.contains(num)) {
return true;
}
set.add(num);
}
return false;
}
}