给你两个长度为 n 、下标从 0 开始的整数数组 nums1 和 nums2 ,另给你一个下标从 1 开始的二维数组 queries ,其中 queries[i] = [xi, yi] 。 对于第 i 个查询,在所有满足 nums1[j] >= xi 且 nums2[j] >= yi 的下标 j (0 <= j < n) 中,找出 nums1[j] + nums2[j] 的 最大值 ,如果不存在满足条件的 j 则返回 -1 。 返回数组 answer ,其中 answer[i] 是第 i 个查询的答案。,用java代码实现
时间: 2024-03-24 09:41:39 浏览: 13
给定一个整数数组 nums 和一个目标值 target,请在数组中找出和为目标值的那两个整数,并返回它们的数组下标
以下是用 Java 实现该问题的代码:
```java
class Solution {
public int[] maxSum(int[] nums1, int[] nums2, int[][] queries) {
int n = nums1.length;
int[] maxSum = new int[n];
for (int i = 0; i < n; i++) {
maxSum[i] = nums1[i] + nums2[i];
if (i > 0) {
maxSum[i] = Math.max(maxSum[i], maxSum[i - 1]);
}
}
int[] ans = new int[queries.length];
for (int i = 0; i < queries.length; i++) {
int xi = queries[i][0];
int yi = queries[i][1];
int max = -1;
if (xi < n && yi < n) {
max = maxSum[Math.max(xi, yi)];
}
ans[i] = max;
}
return ans;
}
}
```
该方法首先计算出每个下标位置 j 的 nums1[j] + nums2[j] 的最大值,保存在一个名为 maxSum 的数组中。然后对于每个查询,找到满足条件的最大下标位置,返回该位置在 maxSum 数组中的值即可。如果不存在满足条件的下标位置,则返回 -1。
阅读全文