樣例:
給出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]算法要求:
你能否優(yōu)化你的算法,如果其中一個(gè)數(shù)組很大而另一個(gè)數(shù)組很小?解題思路:
使用迭代器遍歷2個(gè)數(shù)組,如果A的迭代器比B中的小,則存入第三個(gè)數(shù)組,并將A的迭代器迭代一次,否則將B的迭代器存入第三個(gè)數(shù)組,并將迭代器迭代一次(這里的迭代器可以理解成指針或者游標(biāo))。如果某個(gè)迭代器先迭代完成,則只需要將剩下的都存入到第三個(gè)數(shù)組中即可。算法如下:
vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) { vector<int>::iterator itA = A.begin(); vector<int>::iterator itB = B.begin(); vector<int> C; while (itA != A.end() && itB != B.end()) { if(*itA < *itB) { C.push_back(*itA); itA++; } else { C.push_back(*itB); itB++; } } while(itA != A.end()) { C.push_back(*itA); itA++; } while(itB != B.end()) { C.push_back(*itB); itB++; } return C; }新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注