88. Merge Sorted Array
1.問題
給予兩個sorted list, 將nums2 merge到num1

2.想法
提問
確認題意: 將輸入的兩個字串轉為數字相乘並返回對應的字串
function header, parameter
test input
說明想法
第二種做法是比較兩個list, 將較大者從list 1的最後放入, 由於目的是將list 2完全放入, 因此當list 2的index為0時, 迴圈結束
測試計算複雜度
3.程式碼
方法1
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int r = m + n -1, index1 = m - 1, index2 = n -1;
while (index1 >= 0 && index2 >= 0){
if (nums1[index1] >= nums2[index2]) {
nums1[r] = nums1[index1];
index1--;
r--;
} else {
nums1[r] = nums2[index2];
index2--;
r--;
}
}
while (index1 >= 0){
nums1[r] = nums1[index1];
index1--;
r--;
}
while (index2 >= 0){
nums1[r] = nums2[index2];
index2--;
r--;
}
}
};
方法2
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if (m == 0) {
for (int i = 0; i < n; i++) {
nums1[i] = nums2[i];
}
}
int idx = m + n - 1, idx1 = m - 1, idx2 = n -1;
while (idx2 >= 0) {
if (idx1 >=0 && nums1[idx1] >= nums2[idx2]) {
nums1[idx--] = nums1[idx1--];
} else {
nums1[idx--] = nums2[idx2--];
}
}
}
};
Last updated