首页 > 编程语言 >【算法题】2905. 找出满足差值条件的下标 II

【算法题】2905. 找出满足差值条件的下标 II

时间:2023-10-26 10:04:36浏览次数:40  
标签:indexDifference 下标 2905 nums int 示例 valueDifference II abs

题目:

给你一个下标从 0 开始、长度为 n 的整数数组 nums ,以及整数 indexDifference 和整数 valueDifference 。

你的任务是从范围 [0, n - 1] 内找出 2 个满足下述所有条件的下标 i 和 j :

abs(i - j) >= indexDifference 且
abs(nums[i] - nums[j]) >= valueDifference
返回整数数组 answer。如果存在满足题目要求的两个下标,则 answer = [i, j] ;否则,answer = [-1, -1] 。如果存在多组可供选择的下标对,只需要返回其中任意一组即可。

注意:i 和 j 可能 相等 。

示例 1:

输入:nums = [5,1,4,1], indexDifference = 2, valueDifference = 4
输出:[0,3]
解释:在示例中,可以选择 i = 0 和 j = 3 。
abs(0 - 3) >= 2 且 abs(nums[0] - nums[3]) >= 4 。
因此,[0,3] 是一个符合题目要求的答案。
[3,0] 也是符合题目要求的答案。
示例 2:

输入:nums = [2,1], indexDifference = 0, valueDifference = 0
输出:[0,0]
解释:
在示例中,可以选择 i = 0 和 j = 0 。
abs(0 - 0) >= 0 且 abs(nums[0] - nums[0]) >= 0 。
因此,[0,0] 是一个符合题目要求的答案。
[0,1]、[1,0] 和 [1,1] 也是符合题目要求的答案。
示例 3:

输入:nums = [1,2,3], indexDifference = 2, valueDifference = 4
输出:[-1,-1]
解释:在示例中,可以证明无法找出 2 个满足所有条件的下标。
因此,返回 [-1,-1] 。

提示:

1 <= n == nums.length <= 10^5
0 <= nums[i] <= 10^9
0 <= indexDifference <= 10^5
0 <= valueDifference <= 10^9

java代码:

class Solution {
  //双指针+维护最大最小值
    public int[] findIndices(int[] nums, int indexDifference, int valueDifference) {
        int maxIdx = 0, 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};
    }
}


标签:indexDifference,下标,2905,nums,int,示例,valueDifference,II,abs
From: https://blog.51cto.com/u_6813689/8030079

相关文章

  • 【算法题】2903. 找出满足差值条件的下标 I
    题目:给你一个下标从0开始、长度为n的整数数组nums,以及整数indexDifference和整数valueDifference。你的任务是从范围[0,n-1]内找出2个满足下述所有条件的下标i和j:abs(i-j)>=indexDifference且abs(nums[i]-nums[j])>=valueDifference返回整数数组a......
  • 【算法题】只出现一次的数字 III
    题目:给你一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。你可以按任意顺序返回答案。你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。示例1:输入:nums=[1,2,1,3,2,5]输出:[3,5]解释:[5,3]也是......
  • 创建IIS快后方式
    1.进入目录C:\WINDOWS\system32\inetsrv找到里面的iis.msc文件就是它了,可以双击直接启动,也可以右击它直接创建它的快捷方式.2.最简单的方法:桌面上右键,新建快捷方式,地址为C:\Windows\System32\inetsrv\iis.msc......
  • Windows Server 2019 安装IIS服务
    安装步骤1、点击左下角打开开始菜单找到服务器管理器菜单打开服务器管理器  2、在弹出的服务器管理器界面找到添加角色和功能  3、在弹出的添角色和功能向导中选择下一步  4、选择:基于角色或基于功能的安装,然后下一步  5、选择:从服务器池......
  • 关于单独程序可以访问外网 iis和winserver无法访问外网的问题
    在winserver和iis分别部署了一套发送企微的服务,但是报了一个错 通过ping和浏览器确认网没有问题,然后怀疑是不是有权限的问题,因为这两种服务的权限点不一样给Winserver添加管理员权限。解决 在给iis加权限的时候却遇到了问题,给iis加上管理员权限,并没有什么卵用 后......
  • Modbus协议详解4:RTU帧 & ASCII帧的差错校验
    前面已经分析过RTU帧和ASCII帧的报文区别,细心的朋友应该会发现在两种不同的报文传输模式下都有一个共同的组成部分——差错校验。这个差错校验在RTU模式和ASCII模式下也不是不相同的。看下面的对比:RTU模式的差错校验:ASCII模式的差错校验:总而言之,RTU模式下用的是CRC校验,ASCII模式下......
  • 发布 ASP.NET Core WebAPI 至 IIS
    一、在VS上1.在VS项目上右键,选择发布:2.根据服务器情况,选择目标运行时;将开发时使用的框架作为目标框架;目标位置上已有的文件是否删除,通过删除现有文件进行配置指定。点击发布之后,将在目标位置成生相应的文件。VS上也有相应的输出 二、在目标服务器上 1.复制发布......
  • C++桶排序算法的应用:存在重复元素 III
    题目给你一个整数数组nums和两个整数indexDiff和valueDiff。找出满足下述条件的下标对(i,j):i!=j,abs(i-j)<=indexDiffabs(nums[i]-nums[j])<=valueDiff如果存在,返回true;否则,返回false。示例1:输入:nums=[1,2,3,1],indexDiff=3,valueDiff=0输出......
  • CH32X035 模拟IIC驱动EEPROM
    在CH32X035的GPIO模式配置选项中,并没有开漏输出的配置模式,如下图。在使用GPIO模拟IIC时,可在初始化时将其配置成推挽输出模式,在需要时切换对应的输入输出模式,以下是CH32X035GPIO模拟IIC的实现例程。 具体程序代码如下:iic.h文件:#ifndef__IIC_H#define__IIC_H#include"c......
  • CH32X035 模拟IIC驱动EEPROM
    来源:https://www.cnblogs.com/liaigu/p/17784027.html在CH32X035的GPIO模式配置选项中,并没有开漏输出的配置模式,如下图。在使用GPIO模拟IIC时,可在初始化时将其配置成推挽输出模式,在需要时切换对应的输入输出模式,以下是CH32X035GPIO模拟IIC的实现例程。 具体程序代码如下:iic.......