給定兩個大小相等的數組 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;}
}