C++自带实现两个vector的比较

今天在做一道Leetcode题:拼接最大数时,遇到一个问题:就是我有两个vector:A、B;我要归并A、B(使最后得到的vector个元素组成的数字最大,并保持在原数组的相对有序),所以会存在这样一种情况:A={1,2,3,5,6},B={1,3,4,5,6},A[0]和B[0]相等,我如果随意取了A[0],那么我下一次就拿A[1]和B[0]比,结果取了A[1],但这样并没有先取B[0]再取B[1]大;所以对于当时相等的两个元素,我们不能随意取一个,就需要看后面首次出现不同的元素时,大的元素所在的数组,就去这个数组的元素;

这里就需要两个vector的比较(依次比较两个数组的元素,首次出现不同的元素时,元素大的数组判断为大):

知道有这功能后,我就能轻易实现我想要的部分了:

while (!A.empty() || !B.empty()) {
    auto& bigger = (A > B) ? A : B;
    res.push_back(bigger[0]);
    bigger.erase(bigger.begin());
}
posted @ 2020-12-23 11:17  Luweir  阅读(3688)  评论(0编辑  收藏  举报