给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。
返回 A 的任意排列,使其相对于 B 的优势最大化。
示例 1:
输入:A = [2,7,11,15], B = [1,10,4,11]
输出:[2,11,7,15]
代码
class Solution {public int[] advantageCount(int[] A, int[] B) {PriorityQueue<int[]> priorityQueue=new PriorityQueue<>((o1, o2) -> o1[0]-o2[0]);int[] res=new int[A.length];Arrays.fill(res,-1);Arrays.sort(A);int idx=0;for(int i=0;i<B.length;i++) priorityQueue.add(new int[]{B[i],i});//将b中元素加入优先队列while (!priorityQueue.isEmpty()){int[] temp=priorityQueue.poll();while (idx<A.length&&A[idx]<=temp[0]) idx++;//在a中查找大于当前元素的数字if(idx==A.length) break;//数组a遍历完了res[temp[1]]=A[idx];A[idx]=-1;//标记已经确定了的a中元素}idx=0;for(int i=0;i<A.length;i++)//将没有位置放的a中数字塞进结果{if(res[i]==-1){while (idx<A.length&&A[idx]==-1) idx++;res[i]=A[idx];A[idx]=-1;}}return res;}
}