服务器绑定网站打不开,网站管理设置,建设网站经验,店铺设计logo文章目录1. 题目2. 解题1. 题目
给你两个 非递增 的整数数组 nums1 和 nums2 #xff0c;数组下标均 从 0 开始 计数。
下标对 (i, j) 中 0 i nums1.length 且 0 j nums2.length 。如果该下标对同时满足 i j 且 nums1[i] …
文章目录1. 题目2. 解题1. 题目
给你两个 非递增 的整数数组 nums1 和 nums2 数组下标均 从 0 开始 计数。
下标对 (i, j) 中 0 i nums1.length 且 0 j nums2.length 。如果该下标对同时满足 i j 且 nums1[i] nums2[j] 则称之为 有效 下标对该下标对的 距离 为 j - i 。
返回所有 有效 下标对 (i, j) 中的 最大距离 。如果不存在有效下标对返回 0 。
一个数组 arr 如果每个 1 i arr.length 均有 arr[i-1] arr[i] 成立那么该数组是一个 非递增 数组。
示例 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) 。示例 4
输入nums1 [5,4], nums2 [3,2]
输出0
解释不存在有效下标对所以返回 0 。提示
1 nums1.length 10^5
1 nums2.length 10^5
1 nums1[i], nums2[j] 10^5
nums1 和 nums2 都是 非递增 数组来源力扣LeetCode 链接https://leetcode-cn.com/problems/maximum-distance-between-a-pair-of-values 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
对数组1的每个元素在 逆序的数组2中二分查找时间复杂度 O(n1logn2)O(n1 \log n2)O(n1logn2)
class Solution {
public:int maxDistance(vectorint nums1, vectorint nums2) {int n1 nums1.size(), n2 nums2.size(), i 0, j 0, ans 0;reverse(nums2.begin(), nums2.end());//升序for(int i 0; i n1; i){auto it lower_bound(nums2.begin(), nums2.end(), nums1[i]);//找到大于等于 nums1 i 的第一个数其 序号 是原始顺序下最大的if(it ! nums2.end()){int j it - nums2.begin();//距离if(n2-1-j i)//原始序号 ians max(ans, n2-1-j-i);}}return ans;}
};双指针解法参考官网时间复杂度 O(n1n2)O(n1n2)O(n1n2)
class Solution {
public:int maxDistance(vectorint nums1, vectorint nums2) {int n1 nums1.size(), n2 nums2.size(), i 0, j 0, ans 0;for( ; j n2 i n1; j){while(i n1 nums1[i] nums2[j])//不满足要求i;//减小 nums iif(j i i n1)ans max(ans, j-i);}return ans;}
};228 ms 96.1 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步