题目描述:
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 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,存储,判断当集合中有这个元素时返回true,证明有重复元素,集合中没有就添加进去继续比较,直到循环结束,证明不存在重复元素。
第二种思路,暴力for,双重for循环进行判断,如果两个元素相等就返回true,循环结束则证明不存在重复元素。
代码如下:
第一种方法:
int []a = new int[]{1,2,3,1};
// 第一种方法。set
Set<Integer> set = new HashSet <> ( );//用来存储未重复的元素,当重复时用contains判断,返回false,否则true。
for (int i = 0;i<a.length;i++){
if (set.contains ( a[i] )){//若集合中有的话就返回true
System.out.println("存在重复的元素");
break;
}else {//没有就加入到集合中,继续执行
set.add ( a[i] );
}
}
// 循环结束,就证明没有重复元素
System.out.println("不存在重复的元素");
执行结果:
执行用时:
第二种方法:
for(int i =0;i<a.length;i++){
for (int j=i+1;j<a.length;j++){
if (a[i]==a[j]){
System.out.println("存在重复元素");
break;
}
}
}
System.out.println("不存在重复元素");
执行用时:
总结:这道题很简单,推荐使用第一种方法,时间复杂度小。
2019-3-12