今天在做一道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());
}