8-重复元素

image-20210421201032222

自己的做法

算法思想

使用哈希表,遍历数组,先查看哈希表是否有相同元素,如果有,则停止遍历,返回true;直到遍历结束,返回false。

算法实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {

set<int> numbers;
for(int i = 0; i < nums.size(); i++) {
if(numbers.count(nums[i]) == 0) {
numbers.insert(nums[i]);
} else {
return true;
}
}
return false;

}
};

性能分析

时间复杂度:遍历数组,O(n)O(n)

空间复杂度:使用了哈希表,O(n)O(n)

官方做法

算法思想

把数组排序,然后依次比较相邻元素。

算法实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {

sort(nums.begin(), nums.end());
for(int i = 0; i < nums.size() - 1; i++) {
if(nums[i] == nums[i + 1]) {
return true;
}
}
return false;

}
};

性能分析

时间复杂度:就是排序时间复杂度:O(nlogn)O(n*logn)

空间复杂度:自己实现排序算法,空间复杂度为O(1)O(1),使用默认排序算法,为O(n)O(n)


8-重复元素
https://zhaoquaner.github.io/2022/05/11/leetcode/数组/8-重复元素/
更新于
2022年5月22日
许可协议