• leetcode 219. Contains Duplicate II 存在重复元素 II(简单)


    一、题目大意

    给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

    示例 1:

    输入:nums = [1,2,3,1], k = 3

    输出:true

    示例 2:

    输入:nums = [1,0,1,1], k = 1

    输出:true

    示例 3:

    输入:nums = [1,2,3,1,2,3], k = 2

    输出:false

    提示:

    • 1 <= nums.length <= 105
    • -109 <= nums[i] <= 109
    • 0 <= k <= 105

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/contains-duplicate-ii
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    二、解题思路

    本来要刷220.存在重复元素III的,发现上一题就是II,于是就先刷这题了。这道题限制了数组中只许有一组重复的数字,而且其坐标差不能超过k。用map来解决,定义一个map,来记录每个数字和其坐标的映射,然后遍历这个数组,判断map中是否存在当前数的坐标,如果存在判断已存在的坐标对应的数与当前数的差是否超过k。

    三、解题方法

    3.1 Java实现

    public class Solution {
        public boolean containsNearbyDuplicate(int[] nums, int k) {
            Map<Integer, Integer> map = new HashMap<>();
            for (int i = 0; i < nums.length; i++) {
                if (map.containsKey(nums[i]) && (i - map.get(nums[i]) <= k)) {
                    return true;
                } else {
                    map.put(nums[i], i);
                }
            }
            return false;
        }
    }
    

    四、总结小记

    • 2022/10/12 刷了好多题,都忘记了怎么办。。。总结啊
  • 相关阅读:
    Thinking Clearly about Performance
    国家统计局2018-10-30统计的最新的省市区
    Java 返回字符串中第一个不重复字符的下标 下标从0开始
    国际象棋的游戏规则
    Python语言之requests库
    VBS 自动发消息给对方
    Windows
    上海合计共有16个区一个县
    @RequestMapping中的注解
    Linux 中 /proc/kcore为啥如此之大
  • 原文地址:https://www.cnblogs.com/okokabcd/p/16784255.html
Copyright © 2020-2023  润新知