Golang | Leetcode Golang题解之第220题存在重复元素III

题目:

题解:

Go 复制代码
func getID(x, w int) int {
    if x >= 0 {
        return x / w
    }
    return (x+1)/w - 1
}

func containsNearbyAlmostDuplicate(nums []int, k, t int) bool {
    mp := map[int]int{}
    for i, x := range nums {
        id := getID(x, t+1)
        if _, has := mp[id]; has {
            return true
        }
        if y, has := mp[id-1]; has && abs(x-y) <= t {
            return true
        }
        if y, has := mp[id+1]; has && abs(x-y) <= t {
            return true
        }
        mp[id] = x
        if i >= k {
            delete(mp, getID(nums[i-k], t+1))
        }
    }
    return false
}

func abs(x int) int {
    if x < 0 {
        return -x
    }
    return x
}
相关推荐
smj2302_796826521 小时前
解决leetcode第3768题.固定长度子数组中的最小逆序对数目
python·算法·leetcode
海上彼尚1 小时前
Go之路 - 6.go的指针
开发语言·后端·golang
cynicme1 小时前
力扣3531——统计被覆盖的建筑
算法·leetcode
圣保罗的大教堂3 小时前
leetcode 3531. 统计被覆盖的建筑 中等
leetcode
卜锦元7 小时前
Golang中make()和new()的区别与作用?
开发语言·后端·golang
海上彼尚7 小时前
Go之路 - 3.go的数据类型与转换
开发语言·后端·golang
龙门吹雪7 小时前
Go 语言包初始化顺序详解
golang·init·初始化顺序·依赖包·导入包
Tisfy8 小时前
LeetCode 3531.统计被覆盖的建筑:最大最小值
算法·leetcode·题解·桶排序