image.png
class Solution {
public int[] advantageCount(int[] nums1, int[] nums2) {
int length=nums1.length;
PriorityQueue<int[]> queue=new PriorityQueue<>((int[] part1,int[] part2)->{return part2[1]-part1[1];});
Arrays.sort(nums1);
int left=0;
int right=nums1.length-1;
for(int i=0;i<length;i++){
queue.offer(new int[]{i,nums2[i]});
}
int[] res=new int[length];
while(!queue.isEmpty()){
int[] part=queue.poll();
int i=part[0];
int maxVal=part[1];
if(maxVal<nums1[right]){
res[i]=nums1[right];
right--;
}else{
res[i]=nums1[left];
left++;
}
}
return res;
}
}