首页 > 技术文章 > 第九个算法-重复元素

liutian1912 2018-07-18 10:06 原文

给定一个整数数组,判断是否存在重复元素。

如果任何值在数组中出现至少两次,函数返回 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

思路:
1,第一想法就是排序,有序数组。
2,然后直接对比,如果第n个和第n+1个数组相等,就说明有重复。

我的代码:
public boolean containsDuplicate(int[] nums) {

boolean bool = false;
Arrays.sort(nums);

for (int i = 0; i <nums.length-1 ; i++) {
if(nums[i]==nums[i+1]){
bool = true;
}
}
return bool;
}


别人的效率高的代码:
public boolean containsDuplicate(int[] nums) {
for (int i = 1; i < nums.length; i++) {
for (int j = i - 1; j >= 0; j--) {
if(nums[i] > nums[j])
{
break;
}
else if(nums[i] == nums[j])
{
return true;
}
}

}
return false;
}

这次5分钟就写出来了,心中窃喜,是不是我锻炼有效果了。但事实其实就是真的很简单。练习坚持依旧需要坚持。任重道远,我当持之以恒。

推荐阅读