2020年2月13日
LeetCode 217. Contains Duplicate
C++, LeetCode, 算法, 编程
0 Comments
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
解析:判断数组中是否存在重复元素,如果存在返回true。
法1:先对数组进行排序,然后依次比较当前元素与前一个元素是否相同。
代码如下:
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
int len = nums.size();
if(len == 0)
return false;
sort(nums.begin(), nums.end());
int temp = nums[0];
for(int i =1; i < len; i++)
{
if(nums[i] == temp)
return true;
temp = nums[i];
}
return false;
}
};
代码运行情况:

法2:采用map的形式,对于每个元素判断map中是否已经存在,代码如下:
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_map<int, bool> nums_map;
for(auto &num: nums)
{
if(nums_map.find(num) != nums_map.end())
return true;
else
nums_map[num] = true;
}
return false;
}
};