leetcode 总结 06 存在重复元素

leetcode 06 存在重复元素

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

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

示例 1:

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

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

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

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x248f5/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//解题思路:一开始在没看清楚题目的时候就直接去写了, 因为看到类似的题目,另外一个是需要得到数组中存在最多的数字,但是忽略了一个点,没法记录多少次
// 回来继续考虑,因为知道map 存在两个数据 ,第一个可以作为key , 第二个用来存放存在的数量,当然对于本题来讲,返回True 就可以了。于是代码如下

class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
if(nums.size() <= 1) // 如果只有一个,或者这个数组就没内容,那么必须没有重复的
{
return false;
}
std::map <int ,int> myMap; // 定义用来存放的map key 作为 数值 value 作为出现的次数
std::map<int,int>::iterator it; // 定义it ,服务于map
for(int i = 0; i < nums.size();i++) // 一次遍历
{
it = myMap.find(nums[i]); // 查询是否存在
if(it != myMap.end()) // 如果已经存在 , 那么肯定这次是重复的
{
return true;
}else{
myMap[nums[i]] = 1; // 这里用来存放次数,这里是错误的,主要有用的是key
}
}
return false;
}
};