当前位置: 首页 > news >正文

LeetCode 2905 找出满足差值条件的下标II 题解

示例

nums = [8, 3, 12, 5, 1, 10, 7, 13]
indexDifference = 3
valueDifference = 6答案
[maxIdx, j] = [0, 4]

我的思路是直接枚举写,但这题是中等题,一定不会让你好过的,所以也是喜提了超时,先说一下我的做题思路吧。
其实很简单就是双指针,先初始化l=0和r=l+indexDifference,然后当r++后,同时l++,然后设置一个循环条件,当l>=0,l--,代码如下所示,短是真的短,但是没有维护,一般碰到这种类型的题目一定是需要维护的,减少复杂度,将最大值最小值记录下来的同时也不破环原有的规则

class Solution {public int[] findIndices(int[] nums, int indexDifference, int valueDifference) {int n = nums.length;int l=0;int r=0;for(int i=indexDifference;i<n;i++){l = i-indexDifference;while(l>=0){if(Math.abs(nums[i]-nums[l])>=valueDifference){return new int[]{i,l};}else l--;}}return new int[]{-1,-1};}
}

然后再来看看灵神的做法与其对该代码的维护和优化

来说说灵神的思路:通过一遍遍历,当然也是双指针,但是可以通过维护最大最小值,然后优化掉我的l--,避免重复遍历,毕竟重复遍历以后,时间复杂度最坏可以到o(n*n)
还是画一个图可能比用言语去说更清晰一些。

画的还是有点难以理解,所以结合文字在看一遍

先初始化变量

maxIdx = 0
minIdx = 0

从 j = 3 开始遍历:

我们每次取 i = j - indexDifference

🔁 第 1 步:j = 3, i = 0

  • nums[i] = 8

  • maxIdx = 0, minIdx = 0(保持)

  • 检查:

    • nums[maxIdx] - nums[j] = 8 - 5 = 3 < 6

    • nums[j] - nums[minIdx] = 5 - 8 = -3 < 6 ❌ ➡️ 不满足,继续

🔁 第 2 步:j = 4, i = 1

  • nums[i] = 3

  • 比较:

    • nums[1] > nums[maxIdx]3 > 8

    • nums[1] < nums[minIdx]3 < 8 ✅ → minIdx = 1

  • 检查:

    • nums[maxIdx] - nums[4] = 8 - 1 = 7 ✅ → 满足!

返回结果

[maxIdx, j] = [0, 4]

代码如下

class Solution {public int[] findIndices(int[] nums, int indexDifference, int valueDifference) {int maxIdx = 0;int minIdx = 0;for (int j = indexDifference; j < nums.length; j++) {int i = j - indexDifference;if (nums[i] > nums[maxIdx]) {maxIdx = i;} else if (nums[i] < nums[minIdx]) {minIdx = i;}if (nums[maxIdx] - nums[j] >= valueDifference) {return new int[]{maxIdx, j};}if (nums[j] - nums[minIdx] >= valueDifference) {return new int[]{minIdx, j};}}return new int[]{-1, -1};}
}

相关文章:

  • SNR8016语音模块详解(STM32)
  • 外部访问 Kubernetes 集群中 MQ 服务的方案
  • “技术创新+全球视野”良性驱动,首航新能的2025新征程正式起航
  • 【Linux更新openSSH服务】
  • 经典算法 独立任务最优调度问题
  • 数据结构每日一题day14(链表)★★★★★
  • nDCG(归一化折损累计增益) 是衡量排序质量的指标,常用于搜索引擎或推荐系统
  • FUSE 3.0.0 | 聚合7大直播平台的免费电视直播软件,支持原画清晰度及弹幕、收藏功能
  • 玩转Nginx
  • 电脑重复图片太多?推荐一款开源的图片去重工具ImageContrastTools
  • 鸿蒙 应用开发 项目资源结构及资源访问
  • 数据库12(游标)
  • 2025年-redis(p1-p10)
  • D365 开发环境证书到期替换处理
  • ant-design 表格多选无法显示,选一个选项全部被选中
  • 牛客:AB4 逆波兰表达式求值
  • 启动Hadoop集群及集群效果
  • ai改写智能助手在线润色,高效产出优质文章!
  • Java 数据类型之间的转换入门
  • OpenCV的grabCut算法分割图像
  • 侧记|“五五购物节”启动!最大力度补贴,买买买 “666”
  • “五一”假期首日跨区域人员流动预计超3.4亿人次
  • “非思”的思想——探索失语者的思想史
  • 上海:以税务支持鼓励探索更多的创新,助力企业出海
  • 湖北鄂城:相继4所小学有学生腹泻呕吐,供餐企业负责人已被采取强制措施
  • 十四届全国人大常委会第十五次会议在京闭幕