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