给定两个大小相等的数组 nums1 和 nums2,nums1 相对于 nums 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。
返回 nums1 的任意排列,使其相对于 nums2 的优势最大化。
class Solution {
public int[] advantageCount(int[] nums1, int[] nums2) {
int len = nums1.length;
int left = 0,right = len - 1;
PriorityQueue<int[]> pq = new PriorityQueue<>((o1,o2)->(o2[1]-o1[1]));
for(int i = 0;i < len;i++){
pq.add(new int[]{i,nums2[i]});
}
Arrays.sort(nums1);
int[] res = new int[len];
while( !pq.isEmpty() ){
int[] temp = pq.poll();
int index = temp[0];
int index_num = temp[1];
if(nums1[right] > index_num){
res[index] = nums1[right];
right--;
}else{
res[index] = nums1[left];
left++;
}
}
return res;
}
}
执行用时:73 ms, 在所有 Java 提交中击败了27.67%的用户
内存消耗:58 MB, 在所有 Java 提交中击败了88.17%的用户
通过测试用例:67 / 67