给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这道题有俩种解体方法或者思路:
1.排序,就是从小到大排序,排完序后,然后相邻的俩个就进行比较是不是相等,相等就返回true,否则返回false
代码如下:
public class CountTest {
public boolean CountArray(int [] num ){
Arrays.sort(num);
int n=num.length;
for (int i=0;i<n-1;i++){
if (num[i]==num[i+1]){
return true;
}
}
return false;
}
}
2.哈希表
通过哈希,如果你已经把这个元素添加到哈希中去了,如果再添加相同的元素,就可以检查出来了
代码如下:
public class CountTest{
public boolean CountArray(int [] num){
HashSet<Integer> set = new HashSet<>();
for (int x:num){
if (!set.add(x)){//HashSet中如果存在这个数,在加入这个数,返回false,在前加一个!if得以执行,返回true,说明存在重复元素
return true;
}
}
return false;
}
}
其实刷题,重点实在理解一种思想,一种解决类似的问题的思想
说白了就是一种规律,知识不是信息,学习不是记忆!