【初级算法】存在重复元素

题目:

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

如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

 

思路:

想到hashmap自带的containKey的方法,遍历数组,如果存在containKey为是则跳出循环,为否则put进map中。

代码如下:

class Solution {
    public boolean containsDuplicate(int[] nums) {
        boolean flag = false;
        Map<Integer, Integer> hashmap = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (hashmap.containsKey(nums[i])) {
                flag = true;
                break;
            } else {
                hashmap.put(nums[i], i);
            }
        }
        return flag;
    }
}

总结:

效率是一如既往的差,看了两位大佬的解答,比较受用

首先是用set替换我想到的map,因为set不能有重复元素,add方法如果存在重复值会进行覆盖,同时返回false

对set比较陌生,所以想不到这种方法

代码如下:

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for (int num : nums) {
            if (!set.add(num)) {
                return true;
            }
        }
        return false;
    }
}

 

posted @ 2022-01-06 23:51  ProbablyTrue  阅读(19)  评论(0编辑  收藏  举报