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

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

时间:2023-10-26 10:03:34浏览次数:34  
标签:2903 indexDifference 下标 nums int 示例 valueDifference 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 <= 100
0 <= nums[i] <= 50
0 <= indexDifference <= 100
0 <= valueDifference <= 50

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};
    }
}


标签:2903,indexDifference,下标,nums,int,示例,valueDifference,abs,差值
From: https://blog.51cto.com/u_6813689/8030085

相关文章

  • vue 数组 下标/索引 响应式修改
    this.data对象中的一个数组属性[3]="ttt";//修改后,值有时候在模板中能更新(可能第一次是可以的?),有时候不更新splice实现的等效效果:this.data对象中的一个数组属性.splice(3,1,"ttt");$set实现的等效效果:this.set(this.data对象中的一个数组属性,3,"ttt");......
  • 【gdb】打印数组的索引下标
    打印数组的索引下标1.例子#include<stdio.h>intnum[10]={1<<0,1<<1,1<<2,1<<3,1<<4,1<<5,1<<6,1<<7,1<<8,1<<9};intmain(void){inti;for......
  • 力扣-2574-左右元素和的差值
    给你一个下标从0开始的整数数组nums,请你找出一个下标从0开始的整数数组answer,其中:answer.length==nums.lengthanswer[i]=|leftSum[i]-rightSum[i]|其中:leftSum[i]是数组nums中下标i左侧元素之和。如果不存在对应的元素,leftSum[i]=0。rightSum[i]是数组n......
  • pandas的应用一(DataFrame的显示,以及修改默认下标)
    importpandasaspddata={"姓名":["楚枫","楚月","楚狐宇"],"年龄":["16","17","18"],"性别":["男","女","男"]}df=pd.DataFrame(data)#显示df......
  • 踩过的坑size_t类型下标遍历问题
    踩过的坑size_t类型下标逆序遍历通过下标逆序遍历以下代码是没有问题的strings;cin>>s;for(inti=s.length()-1;i>=0;--i)cout<<s[i];但是如果用无符号类型作为循环变量的类型会出现死循环的问题,因为i>=0永远是成立的strings;cin>>s;......
  • 2023-09-16:用go语言,给你一个整数 n 和一个在范围 [0, n - 1] 以内的整数 p , 它们表示
    2023-09-16:用go语言,给你一个整数n和一个在范围[0,n-1]以内的整数p,它们表示一个长度为n且下标从0开始的数组arr,数组中除了下标为p处是1以外,其他所有数都是0。同时给你一个整数数组banned,它包含数组中的一些位置。banned中第i个位置表示arr[banned[i]]=......
  • 防止数组下标越界的方法
    防止数组下标越界的方法是:先判断指针的位置是否在界外,然后再取指针位置的元素常常犯的错误是while(nums[j]==0&&j!=nums.size())一定要将判断是否是界外放在判断数组的元素前面while(j!=nums.size()&&nums[j]==0)力扣下标越界会报如下错误           ......
  • 100031. 计算 K 置位下标对应元素的和-363
    100031.计算K置位下标对应元素的和给你一个下标从0开始的整数数组nums和一个整数k。请你用整数形式返回nums中的特定元素之和,这些特定元素满足:其对应下标的二进制表示中恰存在k个置位。整数的二进制表示中的1就是这个整数的置位。例如,21的二进制表示为10......
  • 2023-09-16:用go语言,给你一个整数 n 和一个在范围 [0, n - 1] 以内的整数 p , 它们表示
    2023-09-16:用go语言,给你一个整数n和一个在范围[0,n-1]以内的整数p,它们表示一个长度为n且下标从0开始的数组arr,数组中除了下标为p处是1以外,其他所有数都是0。同时给你一个整数数组banned,它包含数组中的一些位置。banned中第i个位置表示arr[banned[i......
  • 2023-09-16:用go语言,给你一个整数 n 和一个在范围 [0, n - 1] 以内的整数 p , 它们表示
    2023-09-16:用go语言,给你一个整数n和一个在范围[0,n-1]以内的整数p,它们表示一个长度为n且下标从0开始的数组arr,数组中除了下标为p处是1以外,其他所有数都是0。同时给你一个整数数组banned,它包含数组中的一些位置。banned中第i个位置表示arr[banned[i]]=......