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的方法。思路如下:
- 创建一个哈希表,然后从左往右遍历数组。
- 检测哈希表中是否已存在当前字符,若存在,直接返回结果;
- 若不存在当前字符,将当前字符加入哈希表,供后续判断使用。
三、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;
}
}
四、总结:
构建了哈希表来和原数组对比,核心思想就是在于两个数组的对比,这在数组类的算法题中很常见。
掘友们,解题不易,留下个赞或评论再走吧!谢啦~ 💐
差点忘了,祝您虎年大吉,希望对你有帮助,期待您找到心意的工作和满意的offer
期待下次再见~
\