题目描述
题干:
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 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
题解思路
存在重复返回true,这道题和 169.多数元素 那道题有些相像,这里一看到重复就可以想到哈希表的方法
除了哈希表,因为只要有一个重复即可,所以我们可以先排序,然后从头开始前后比较也可以优化过程
正确代码
import java.util.Arrays;
import java.util.HashSet;
public class MyContainsDuplicate {
//排序后前后比较
public boolean containsDuplicate1(int[] nums) {
Arrays.sort(nums);
for (int i = 0; i < nums.length - 1; i++) {
if (nums[i] == nums[i + 1]){
return true;
}
}
return false;
}
//哈希表
public boolean containsDuplicate11(int[] nums){
HashSet<Integer> set = new HashSet<>();
for (int num : nums) {
if (!set.add(num)){
return true;
}
}
return false;
}
总结
本身不难,看完就写,思路代码都是对的,现在HashSet用的也还可以了,抽时间得了解一下底层原理了,当然还有HashMap
如果文章本身存在问题或者存在更好的题解,欢迎在评论区斧正和评论,各自努力,你我最高处见