題目:有兩個排序的陣列a1和a2,內存在a1的末尾有足夠多的空餘空間容納a2。請實現乙個函式,將a2中的所有數字插入a1中,並且所有的數字是排序的。(時間複雜度o(n))
輸入a1=,a2=
則輸出a1=
// 測試用例
// test1 len1 > len2 eg : a1 = ; a2 = ;
// test2 len1 < len2 eg : a1 = ; a2 = ;
// test3 len1=len2 eg: a1=; a2=;
#includeusing namespace std;
void combinearray(int a1, int a2, int len1, int len2)
// 如果a1有元素剩餘(即:i>=0),將其依次拷貝到a1的前端(a1不需要再次拷貝,無須此操作)
//while (i >= 0)
// // 如果a2有元素剩餘(即:j>=0),將其依次拷貝到a1的前端
while (j >= 0)
for (int index = 0; index < len1 + len2; index++)
cout << a1[index] << " ";
}int main()
; int a2 = ;
combinearray(a1, a2, 5, 5);
cout << endl;
return 0;
}
劍指Offer 面試題5替換空格
note 劍指offer的題可以在牛客網上做題驗證思路的正確性 思路 因為stringbuffer本身是可變字串序列,可以修改,實際上它的可變是犧牲空間換取的。替換可能導致超出其容量,char陣列的複製和新建。public string replacespace stringbuffer str s...
劍指offer 面試題5 替換空格
拿到這個題時,第乙個要考慮的就是記憶體夠不夠的問題。因為原來空格是乙個字元,現在要將乙個空格替換為三個字元,記憶體會變大。現在假設是在記憶體足夠的情況下修改。過程如下 完成乙個空格的替換 完成替換 測試用例的考慮 如下 void changestr char arr,int sz int i 0 i...
劍指offer面試題5 替換空格
面試題5 替換空格 思路一 新建乙個足夠的大小的字串空間,然後依次將字元拷貝,遇到空格進行三個字元的填充,接著重複執行前面的操作將整個字串替換完畢。時間複雜度o n 空間複雜度o n 思路二 從頭到尾掃瞄字串,每次遇到空格將後續字元向後移動兩個位置,然後進行填充。時間複雜度o n 2 思路三 從尾部...