217. 重复元素
Tag: Array
Difficulty: Easy
Link: https://leetcode-cn.com/problems/contains-duplicate/
分析
方法一:排序
如果数组中有重复元素,那么排序后两者应该相邻。
class Solution {
public boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);
for (int i=0; i<nums.length-1; i++) {
if (nums[i] == nums[i+1]) return true;
}
return false;
}
}
复杂度分析:
- 时间复杂度:首先是排序算法,我们知道对于比较类排序算法而言,其复杂度最坏情况
下为O(nlogn)
,而紧接着判断相邻的复杂度为O(n)
,综合为O(nlogn)
- 空间复杂度:
O(1)
方法二:哈希表
运用特定的数据结构进行快速查找和插入
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<>(nums.length);
for (int i=0; i<nums.length; i++) {
if (set.contains(nums[i])) return true;
set.add(nums[i]);
}
return false;
}
}
复杂度分析:
- 时间复杂度:
O(n)
- 空间复杂度:
O(n)