[LeetCode]217. Contains Duplicate 解题报告(C++)
题目描述
Given an array of integers, find if the array contains any duplicates.
Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
Example 1:
Input: [1,2,3,1]
Output: true
Example 2:
Input: [1,2,3,4]
Output: false
Example 3:
Input: [1,1,1,3,3,4,3,2,4,2]
Output: true
题目大意
- 给定一个数组.让你找到是否包含重复数字.
解题思路
方法1:
- 对数组进行排序.
- 遍历数组,看相邻是否相等.
代码实现:
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size()-1;i++){
if(num[i]==num[i+1])
return true;
}
return false;
}
};
方法2:
- 暴力解法.
map
统计个数.再遍历map
代码实现:
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
map<int, int> mymap;
for (int i = 0; i < nums.size(); i++) {
mymap[nums[i]]++;
}
for (int i = 0; i < nums.size(); i++) {
if (mymap[nums[i]] > 1) {
return true;
}
}
return false;
}
};
// 思路差不多的方法:
// 先查找.后计数.
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_map<int, int> m;
for (int i = 0; i < nums.size(); ++i) {
if (m.find(nums[i]) != m.end()) return true;
++m[nums[i]];
}
return false;
}
};
小结
- 比较简单.