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.
问题描述:
判断一个数组里面是否有重复的值
Python解法:
class Solution:
# @param {integer[]} nums
# @return {boolean}
def containsDuplicate(self, nums):
if len(nums) == len(set(nums)):
return False
return True
然后用Java解决:
第一种思路,对每一个值进行遍历,如果出现多次,返回true,每个值都只出现一次,返回false
public class Solution {
public boolean containsDuplicate(int[] nums) {
int count = 0;
for(int i:nums){
count = 0;
for(int j:nums){
if (i == j) count ++;
}
if(count > 1) return true;
}
return false;
}
}
不过提交后,华丽丽地告诉我运行时间超过限制,然后我发现它提供了一个长度近万的测试数组[0,1,2,3,········,9999]
改进:
当长度大于2时,从第2个元素开始,查看该元素是否与他前面的值重复。那么一个长度为n的数组,需要比较n(n-1)/2次。而上面的方法最多需要比较n*n次。
然而还是华丽丽地超时了····
public class Solution {
public boolean containsDuplicate(int[] nums) {
if(nums.length <= 1) return false;
for(int i=1;i<nums.length;i++)
for (int j = 0;j< i; j++)
if(nums[i] == nums[j]) return true;
return false;
}
}