leetcode870. 优势洗牌(贪心算法)
生活随笔
收集整理的這篇文章主要介紹了
leetcode870. 优势洗牌(贪心算法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定兩個大小相等的數組 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;} }總結
以上是生活随笔為你收集整理的leetcode870. 优势洗牌(贪心算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode1497. 检查数组对是
- 下一篇: 梦到前男友给我打电话代表什么