当前位置: 首页 > 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};}
}
http://www.xdnf.cn/news/224461.html

相关文章:

  • AI驱动的决策智能系统(AIDP)和自然语言交互式分析
  • ArcGIS+GPT:多领域地理分析与决策新方案
  • 第十一节:Shell脚本编程
  • 软件架构选型之“如何选”
  • Walrus 与 Pudgy Penguins 达成合作,为 Web3 头部 IP 引入去中心化存储
  • 米壳AI:跨境电商图片翻译的“隐形革命”:当AI技术遇上全球化生意
  • Azure Monitor 实战指南:全方位监控应用与基础设施
  • 零基础学指针2
  • 蓝桥杯赛后总结
  • Transformer:颠覆深度学习的架构革命与技术演进
  • HTTP/HTTPS
  • shell(5)
  • 2025年真实面试问题汇总(一)
  • MCP协议:自然语言与结构化数据的双向桥梁 ——基于JSON-RPC 2.0的标准化实践
  • 备战2025年全国信息素养大赛图形化挑战赛——判断闰年和平年
  • iOS RunLoop 深入解析
  • Linux:network: mtu: 隐形知识frag_max_size
  • webpack5启动项目报错:process is not defined
  • CSS常用属性_(进阶)
  • 理解数据库存储以及查询(集合)
  • 强化学习_Paper_2017_Curiosity-driven Exploration by Self-supervised Prediction
  • ROS2与Carla安装设备指南(其二)
  • K8S Secret 快速开始
  • ArrayList的特点及应用场景
  • 评估个股相比大盘强弱程度的方法
  • STM32实现simpleFOC控制无刷电机
  • k8s -hpa
  • LeetCode算法题 (除自身以外数组的乘积)Day14!!!C/C++
  • 微信小程序中使用 多线程 Worker
  • Rust 学习笔记:关于结构体的例题