每日一道leetcode(2026.04.19):下标对中的最大距离

每日一道leetcode(2026.04.19):下标对中的最大距离

  • [1. 题目](#1. 题目)
  • [2. 分析](#2. 分析)
  • [3. 代码实现](#3. 代码实现)

1. 题目

给你两个 非递增 的整数数组 nums1​​​​​​ 和 nums2​​​​​​ ,数组下标均 从 0 开始 计数。

下标对 (i, j) 中 0 <= i < nums1.length 且 0 <= j < nums2.length 。如果该下标对同时满足

i <= j 且 nums1i <= nums2j ,则称之为 有效 下标对,该下标对的 距离 为 j - i​​ 。​​

返回所有 有效 下标对 (i, j) 中的 最大距离 。如果不存在有效下标对,返回 0 。

一个数组 arr ,如果每个 1 <= i < arr.length 均有 arri-1 >= arri 成立,那么该数组是一个非递增 数组。

示例 1:

输入:nums1 = 55,30,5,4,2, nums2 = 100,20,10,10,5

输出:2

解释:有效下标对是 (0,0), (2,2), (2,3), (2,4), (3,3), (3,4) 和 (4,4) 。 最大距离是 2 ,对应下标对 (2,4) 。

示例 2:

输入:nums1 = 2,2,2, nums2 = 10,10,1

输出:1

解释:有效下标对是 (0,0), (0,1) 和 (1,1) 。 最大距离是 1 ,对应下标对 (0,1) 。

示例 3:

输入:nums1 = 30,29,19,5, nums2 = 25,25,25,25,25

输出:2

解释:有效下标对是 (2,2), (2,3), (2,4), (3,3) 和 (3,4) 。 最大距离是 2 ,对应下标对 (2,4) 。

提示:

1 <= nums1.length <= 105

1 <= nums2.length <= 105

1 <= nums1i, nums2j <= 105

nums1 和 nums2 都是 非递增 数组

2. 分析

这类计算最大距离和最小距离的题目特别多,感觉还是有很多相似之处。

本题有个条件非递增 的整数数组 nums1​​​​​​ 和 nums2​​​​​​ ,我一开始没有注意到 arr[i-1] >= arr[i]这句话,以为就是两个乱序的数组,但其实,这里说的是递减数组。非递增和递减肯定不是一个意思,物理吐槽。

有了这个条件,其实就可以使用滑动窗口的思路来解题。同样采用两层循环,外层循环为第一个数组的顺序遍历,内层循环为第二个数组的顺序遍历,但只需要找到第一个不满足nums1[i] <= nums2[j]就行了,想到与就找到了数组1中第i个数值对应的有效最大距离。更重要的,当遍历到数组1的i+1个下标时,内层循环只需要接着上次的遍历位置继续遍历和比较即可,因为是有序的,不需要从头开始,不然就超时了。

3. 代码实现

java 复制代码
class Solution {
    public int maxDistance(int[] nums1, int[] nums2) {
        int maxDistance = 0;
        int fromIndex = 0;
        for (int i = 0; i < nums1.length; i++) {
            // 判断是否继续循环
            if (maxDistance != 0 && maxDistance >= nums2.length - 1 - i) {
                return maxDistance;
            }
            // 从上个位置开始往后找,直到找到第一个不匹配的数据
            for (int j = fromIndex; j <= nums2.length - 1; j++) {
                if (nums1[i] > nums2[j]) {
                    fromIndex = j;
                    break;
                }
                maxDistance = Math.max(maxDistance, j - i);
            }
        }
        return maxDistance;
    }
}
相关推荐
普通攻击往后拉20 小时前
Leetcode 206. 反转链表
算法·leetcode·链表
@syh.20 小时前
【贪心】矩阵消除游戏
算法·游戏·矩阵
可编程芯片开发21 小时前
基于零极点配置的PID控制系统simulink建模与仿真
算法
徐小夕21 小时前
开源!我用SQLite + DuckDB打造了一款可视化AI问数平台
前端·算法·github
Hrain-AI21 小时前
2026 企业 AI 智能体平台横评:8 大主流平台 7 维度实测对比
人工智能·算法·机器学习
Angel Q.1 天前
因子分析和生成模型有什么关系?从“幕后因素”到“生成数据”
算法
咩咩啃树皮1 天前
第52篇:前端工程化完整体系精讲——Vite构建、模块化、打包原理、规范体系、面试终极通关
前端·面试·职场和发展
FBI HackerHarry浩1 天前
AI大模型开发V2第四阶段线性回归
人工智能·算法·线性回归
Jerry1 天前
LeetCode 108. 将有序数组转换为二叉搜索树
算法