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


    插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
    坚持不懈,越努力越幸运,大家一起学习鸭~~~

    题目:

    给你一个下标从 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};
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  • 相关阅读:
    python虚拟环境的安装和搭建
    Web前端:雇佣全栈开发者有哪些好处?
    客服测试12345678
    Typescript学习
    分布式系统中的主从复制基本原理
    LeetCode算法心得——连续数组(前缀和+HashMap)
    Linux-文件和目录
    如何加入开源项目维护并提交代码?本地搭建源码阅读开发构建环境示例: kafka
    TRT部署ONNX
    【GD32F427开发板试用】+rtt-thread nano+finsh极简开发
  • 原文地址:https://blog.csdn.net/kangbin825/article/details/133897614