217 Contains Duplicate 存在重复元素
Description:
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:
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。如果数组中每个元素都不相同,则返回 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
思路:
利用 set或者 map记录出现过的数字, 用排序会增加时间复杂度到 O(nlgn)
时间复杂度O(n), 空间复杂度O(n)
代码:
C++:
class Solution
{
public:
bool containsDuplicate(vector<int>& nums)
{
set<int> s(nums.begin(), nums.end());
return nums.size() != s.size();
}
};
Java:
class Solution {
public boolean containsDuplicate(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(nums[i])) return true;
else map.put(nums[i], 1);
}
return false;
}
}
Python:
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
return len(nums) != len(set(nums))