1. 程式人生 > >LeetCode 中級 - 優勢洗牌(870)

LeetCode 中級 - 優勢洗牌(870)

false ack 滿足 leet 最小 spa pub 索引 nta

給定兩個大小相等的數組 AB,A 相對於 B 的優勢可以用滿足 A[i] > B[i] 的索引 i 的數目來描述。

返回 A 的任意排列,使其相對於 B 的優勢最大化。

示例 2:

輸入:A = [12,24,8,32], B = [13,25,32,11]
輸出:[24,32,8,12]

思路: 類似田忌賽馬,先將A排序。
class Solution {
public:
    vector<int> advantageCount(vector<int>& A, vector<int>& B) {
        vector
<int> c;//存入符合要求的序列 sort(A.begin(),A.end());//先將A按遞增排序 bool flag; int index=0; while(!A.empty()&&index<B.size()) { flag=false; for(int i=0;i<A.size();i++) { //找到第一個大於B[index]的位置 if
(A[i]>B[index]) { flag = true; index++; c.push_back(A[i]);//將其放入c中 A.erase(A.begin()+i);//移除該位置的值 break;//跳出循環 } } if(!flag)//若都比B[index]小,將A中最小的壓入c
{ c.push_back(A[0]); A.erase(A.begin()); index++; } } return c; } };

LeetCode 中級 - 優勢洗牌(870)