leetcode 870. Advantage Shuffle

Posted ymjyqsx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 870. Advantage Shuffle相关的知识,希望对你有一定的参考价值。

870. Advantage Shuffle

思路:A数组的最大值大于B的最大值,就拿这个A跟B比较;如果不大于,就拿最小值跟B比较

A可以改变顺序,但B的顺序不能改变,只能通过容器来获得由大到小的顺序,并且必须存储相应的index,因为最终需要将选择的A的数值存入与这个B相对应的index下

class Solution {
public:
    vector<int> advantageCount(vector<int>& A, vector<int>& B) {
        vector<int> result(A.size());
        sort(A.begin(),A.end());
        priority_queue<pair<int,int>> q;
        for(int i = 0;i < B.size();i++)
            q.push({B[i],i});
        int left = 0,right = A.size() - 1;
        while(left <= right){
            int num = q.top().first;
            int index = q.top().second;
            q.pop();
            if(A[right] > num){
                result[index] = A[right];
                right--;
            }
            else{
                result[index] = A[left];
                left++;
            }
        }
        return result;
    }
};

 

以上是关于leetcode 870. Advantage Shuffle的主要内容,如果未能解决你的问题,请参考以下文章

870. Advantage Shuffle

力扣 每日一题 870. 优势洗牌难度:中等(贪心+双指针)

力扣 每日一题 870. 优势洗牌难度:中等,rating: 1648(贪心+双指针)

LeetCode 870. 优势洗牌(田忌赛马问题)

LeetCode 0870. 优势洗牌 - LetMeFly趣解田忌赛马:能赢则赢,否则摆烂(贪心)

Leetcode(870)-优势洗牌