【初级算法】存在重复元素
题目:
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true
。如果数组中每个元素都不相同,则返回 false
。
思路:
想到hashmap自带的containKey的方法,遍历数组,如果存在containKey为是则跳出循环,为否则put进map中。
代码如下:
class Solution { public boolean containsDuplicate(int[] nums) { boolean flag = false; Maphashmap = 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) { Setset = new HashSet<>(); for (int num : nums) { if (!set.add(num)) { return true; } } return false; } }