Adcantage Shuffule

my solution
重要的是顺序, 如果有顺序, 可以节省很多性能. 即使需要排序, 也是可以接受的.
其次就是结果需要原始顺序, 那么可能就要需要一个值-索引的结构. 但是这可能复杂度太高了. 
所以我选择排序, 但不生产值-索引的结构.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   | class Solution { public:     vector<int> advantageCount(vector<int>& A, vector<int>& B) {         sort(A.begin(), A.end());         int b = 0;         vector<int> ret;         for (int i = 0; ; ++i) {             while (b < A.size() && A[b] <= B[i]) {                 ++b;             }                          b = b == A.size() ? 0 : b;             ret.push_back(A[b]);             if (i + 1 >= B.size()) {                 break;             }                          A.erase(A.begin() + b);             if (B[i + 1] < B[i]) {                 b = 0;             }         }                  return std::move(ret);     } };
  | 
 
虽然克预见的低效率, 但是代码整体很简洁, 达到了我想要的部分效果, 但是效率很低. 
the best solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
   | class Solution { public:     vector<int> advantageCount(const vector<int>& A, const vector<int>& B)     {         const int N = static_cast<int>(A.size());         vector<pair<int, int>> copyB(N);         for (int i = 0; i < N; ++i)         {             copyB[i] = {B[i], i};         }         sort(copyB.begin(), copyB.end(), [] (const pair<int, int>& lhs, const pair<int, int>& rhs) -> bool {             return lhs.first > rhs.first;         });         vector<int> copyA(A);         sort(copyA.begin(), copyA.end());         vector<int> ret(N);         int first = 0;         int last = N - 1;         for (const pair<int, int>& item : copyB)         {             if (copyA[last] > item.first)             {                 ret[item.second] = copyA[last];                 --last;             }             else             {                 ret[item.second] = copyA[first];                 ++first;             }         }         return ret;     } };
   | 
 
他的方法和我预料的差不多, 是两个顺序数组. 
emm… 或许我有点过了? 我是想到值-索引的时候立马打断了这个想法. 因为觉得有点复杂了. 如果我继续想的话, 应该差不多就这个样子吧?