关于golang:Leetcode专题数组219存在重复元素II

5次阅读

共计 526 个字符,预计需要花费 2 分钟才能阅读完成。

力扣链接:https://leetcode-cn.com/probl…
解题思路:

  1. 首先联合题干剖析分明题目的意思,给定一个数组 nums 和一个数字 k,是否存在下标 i,j 使得两个不同的下标在相差不超过 k 的时候想等
  2. 依据下面提取进去的意思,能够将问题转换为,在一个长度为 K +1(i-j<=k,那么算上 i 自身,滑动窗口最大的长度为 k +1) 的窗口中寻找是否存在两个雷同的数字,这个时候,解决问题的模型曾经建设
  3. 有窗口的下限,那么就须要在达到下限时舍弃元素,这个时候就把窗口的最右边元素舍弃,下标为 i -k-1(i- k 为滑动窗口内的第一个元素,须要舍弃的须要再减一)
  4. 最初一个问题,如何标记元素曾经呈现过呢?在解决数组问题时,咱们常常借助哈希表来进行标记位的存储
func containsNearbyDuplicate(nums []int, k int) bool {numsToFlag := map[int]bool{}
    for i := 0; i < len(nums); i++ {
        if i > k {numsToFlag[nums[i-k-1]] = false
        }
        if numsToFlag[nums[i]] {return true}
        numsToFlag[nums[i]] = true
    }
    return false
}
正文完
 0