题目地址:Contains Duplicate - LeetCode
题目:
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。如果数组中每个元素都不相同,则返回 false。
我的想法是先排序,再看是否有重复的。
Python3代码如下:
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
if len(nums)<2:
return False
nums.sort()
for i in range(1,len(nums)):
if nums[i]==nums[i-1]:
return True
return False
结果如下:
Runtime: 52 ms, faster than 50.12% of Python3 online submissions for Contains Duplicate.
Memory Usage: 16.4 MB, less than 82.20% of Python3 online submissions for Contains Duplicate.
看了别人的Solution后,我觉得也许用set更快:
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
nums2=set(nums)
return len(nums2)!=len(nums)
结果只用了44ms,快了11ms,但内存多占用了3M
Java代码如下:
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<>(nums.length);
for (int x: nums) {
set.add(x);
}
return set.size()!=nums.length;
}
}
耗时只有8ms,但是内存占用了44M。