LeetCode—220. 存在重复元素 III

220. 存在重复元素 III

题目描述:
给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。

如果存在则返回 true,不存在返回 false。

考察重点:滑动窗口,桶排序

方法概括:滑动窗口:循环i向后一位,则删除一个之前存在桶中的第i-k元素。桶排序:根据特定条件将不同元素放入不同队列中(本题中用的是hashmap)

/**
桶排序思想:以t + 1 作为桶基准来区分元素如数列 1 4 8 9 12 14 16         如果t为3 则t+1为4   bucket = n / (t+1)放入桶 0 1 2 2 3  3  4          桶只存放满足满足条件并且靠后的元素(索引2 索引3 同样在桶2,因为是向后遍历,所以存相对靠后的索引3元素即可)
*/
func ContainsNearbyAlmostDuplicate(nums []int, k int, t int) bool {numslen := len(nums)bucket := make(map[int]int, numslen)for i := 0; i < numslen; i++ {id := getId(nums[i], t)_, ok := bucket[id]if ok { //如果相同桶中有元素,直接返回return true}v, ok := bucket[id+1]if ok && abs(nums[i]-v) <= t { //如果是相邻桶中有元素,考虑有6/3=2 5/3=1这种情况  所以还需要具体比较两元素是否差值<=treturn true}v, ok = bucket[id-1]if ok && abs(nums[i]-v) <= t {return true}bucket[id] = nums[i]if i >= k { //精髓:滑动窗口,一边向后遍历,一边删除当前位置之前k位,即不满足i-j <= k的元素delete(bucket, getId(nums[i-k], t))}}return false
}func abs(n int) int {if n >= 0 {return n} else {return -n}
}func getId(n int, k int) int {if n >= 0 {return n / (k + 1)}return n/(k+1) - 1 //精髓:因为如果abs(n) < k ,比如-2 / 3 与 2 / 3 都会返回0,而负值-1则会将-2/3返回-1。由此将-2与2区分开来
} //同时因为所有负数统一-1,也不会影响其他负数。比如-4/3 将返回-2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

德里达逝世了!

放个标题在这里吧&#xff0c;追悼一下&#xff0e;-----------------------------------------------------某个人&#xff0c;您或者我&#xff0c;走上前来说&#xff1a;“最终&#xff0c;我要学会生活” !"生活&#xff0c;能够学会吗&#xff1f;能够教吗&#xff…

关于活动对像要注意的问题

如果用 RTime 中的 AT 方法&#xff0c;则这个时间不能比现在的时间小&#xff0c;否则 iStatus.Int() 将返回 -10 KErrUnderflow 这个错误 转载于:https://www.cnblogs.com/zziss/archive/2011/05/06/2039094.html

ByteBuffer常用方法详解

缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储&#xff0c;这部分预留的内存空间就叫做缓冲区&#xff1a; 使用缓冲区有这么两个好处&#xff1a; 1、减少实际的物理读写次数 2、缓冲区在创建时就被分配内存&#xff0c;这块内存区域…

LeetCode—221. 最大正方形

221. 最大正方形 题目描述&#xff1a; 在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内&#xff0c;找到只包含 ‘1’ 的最大正方形&#xff0c;并返回其面积。 考察重点&#xff1a;动态规划 方法概括&#xff1a;二维矩阵中查询最大矩形 dp[i][j] Min(dp[i-1][j],dp[i][j-1]…

发布Activex

1、如果需要创建cab文件&#xff0c;首先需要Cabarc或者Makecab&#xff0c;它们随着Cabinet SDK的安装就有了&#xff0c;Cabinet SDK的下载地址是http://msdn.microsoft.com/workshop/management/cab/cabdl.asp。 Cabarc可以创建、查看或者解出cab里面的文件&#xff0c;而…

做汉堡

其实我还是不太明白为什么要叫做汉堡&#xff0c;虽然我很喜欢吃汉堡..... 对于上次结对子作业的队友&#xff0c;小伙伴&#xff0c;我只想说一个字赞&#xff01;前所未有的感觉&#xff08;夸张了点&#xff09;... first&#xff0c;我们对整个任务没有做出工作量分析&…

Egret入门学习日记 --- 第二篇

第二篇&#xff08;学习篇&#xff09; 既然选好了Egret&#xff0c;那我就要想想怎么学了。 开始第一步&#xff0c;先加个Q群先&#xff0c;这不&#xff0c;拿到了一本《Egret HTML5游戏开发指南》&#xff0c;阅至三章&#xff0c;得到印象相对较深的好处和坏处&#xff1…

参加Sun公司的新产品的发布会议

在2004年的最后阶段&#xff0c;能收到Sun公司的邀请函&#xff0c;去参加“Sun秋季产品发布会”&#xff0c;是在沈阳的丽都喜来登酒店&#xff0c;幸运的是&#xff0c;这次地点是上次微软公司msdn发布会的邻居&#xff0c;也是五星级别的。不过这次去的时候&#xff0c;小妹…

LeetCode—222. 完全二叉树的节点个数

222. 完全二叉树的节点个数 题目描述&#xff1a; 给你一棵 完全二叉树的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下…

编程珠玑读书笔记之磁盘文件排序

输入&#xff1a; 所输入的是一个文件&#xff0c;至多包含n个正整数&#xff0c;每个正整数都要小于n&#xff0c;这是 n 10^7。如果输入时某个整数出现了两次&#xff0c;就会产生一个致命的错误。这些整数与其他任何数据都不关联。 输出&#xff1a; 以增序形式输出的经过排…

辨别文件的真实类型

2019独角兽企业重金招聘Python工程师标准>>> 参考博客http://blog.csdn.net/shixing_11/article/details/5708145 每个文件类型都对应着一个编码头部 下面这些是已知的文件头部[自定义的枚举类型] package org.masque.file; /*** * Description:文件对应的文件头,资…

ng build --prod --aot打包Angluar4项目报javaScript heap out of memory,内存溢出

这里 Allocation failed - JavaScript heap out of memory JavaScript堆内存不足&#xff0c;我们都知道 Node 是基于V8引擎&#xff0c;在一般的后端开发语言中&#xff0c;在基本的内存使用上没有什么限制&#xff0c;但是我去查阅了相关的资料才发现&#xff0c;在 Node 中通…

GARFIELD@12-02-2004

your BELLY is more ready to be convinced than your BRAIN 转载于:https://www.cnblogs.com/rexhost/archive/2004/12/02/72000.html

LeetCode—223. 矩形面积

223. 矩形面积 题目描述&#xff1a; 给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形&#xff0c;请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示&#xff1a; 第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2)…

Spring Android 1.0.0.M3 发布

Spring Android 项目今天发布了第三个里程碑版本。 Spring Android 是一个在 Android 环境下使用 Spring 框架的项目&#xff0c;M3 版本主要是为 Android 应用扩展了对 Spring Social 的支持&#xff0c;包括&#xff1a; 通过全新的 Spring Android Auth 模块支持 Spring Soc…

几种开源工作流引擎的简单比较(转)

摘要&#xff1a;目前开源工作流引擎用的最多的是jbpm &#xff0c; 各种特性都不错&#xff0c; 文档也比较多&#xff0c; 下面只简单列举一下目前开源工作流引擎用的最多的是jbpm &#xff0c; 各种特性都不错&#xff0c; 文档也比较多&#xff0c; 下面只简单列举一下 其他…

LeetCode—224. 基本计算器(困难)

224. 基本计算器&#xff08;困难&#xff09; 题目描述&#xff1a; 给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 注意:不允许使用任何将字符串作为数学表达式计算的内置函数&#xff0c;比如 eval()。 考察重点&#xff1a;使用go建立…

LBS业务资料随记

技术规范&#xff1a;设备技术要求&#xff0c;SP Access接口规范&#xff0c;GIS结构规范、L1接口规范、地图标准规范、终端规范 一个小型的ArcIMS网站 http://www.geo-spatial.net/csk/Downloads/default.aspx 基于位置的业务 。。随着用户移动终端设备的普及&#xff0c;简…

shell 和 || 的短路使用

shell && 和 || 的短路使用 && 和 || 在 shell 中分别表示 and 和  or&#xff0c;和其它语言类似&#xff0c;这两个操作有短路效应。也就是说&#xff0c;当判断式已经确定时&#xff0c;不再继续处理后续表达式。 && 在失败时中断&#xff0c; || …

XiaoKL学Python(C)__future__

__future__ in Python 1. from __future__ import xxxx 这是为了在低版本的python中使用可能在某个高版本python中成为语言标准的特性&#xff0c;从而 在将代码由低版本迁移到高版本的过程中&#xff0c;减少需要做的工作。 这种语句被称为 future_statement 2. future_state…