数据结构入门-217. 存在重复元素

113 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
 
​
示例 1:
​
输入:nums = [1,2,3,1]
输出:true
示例 2:
​
输入:nums = [1,2,3,4]
输出:false
示例 3:
​
输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true
 
​
提示:
​
1 <= nums.length <= 105
-109 <= nums[i] <= 109
​
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、思路分析:

题意要求找出数组中是否存在重复元素,如果存在返回true,否则返回false。

而HashMap中key是不可以重复的,如果重复添加的话,HashMap会自动覆盖key一样的数据,保证一个key对应一个value。同时HashMap 存在方法containsKey() 可以判断是否已存在key。

那么本题使用hashMap的方法。思路如下:

  1. 创建一个哈希表,然后从左往右遍历数组。
  2. 检测哈希表中是否已存在当前字符,若存在,直接返回结果;
  3. 若不存在当前字符,将当前字符加入哈希表,供后续判断使用。

三、AC 代码:

class Solution {
    public boolean containsDuplicate(int[] nums) {
         Map<Integer,Integer> map = new HashMap<>();
        for (int x : nums) {
               if (map.containsKey(x)){
            
                return true;
            }
            else{
             map.put(x,1)
            }
        }
        return false;
    }
}
​

四、总结:

构建了哈希表来和原数组对比,核心思想就是在于两个数组的对比,这在数组类的算法题中很常见。

image-20220314100305655

掘友们,解题不易,留下个赞或评论再走吧!谢啦~ 💐

差点忘了,祝您虎年大吉,希望对你有帮助,期待您找到心意的工作和满意的offer

期待下次再见~

\