题目:
Given two sorted integer arrays A and B, merge B into A as one sorted array.
Note:
You may assume that A has enough space to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.
刚开始根据归并排序写的多了一个中间数组
void MergeSortArr(int arrA[],int lA,int arrB[],int lB){ int *trr = new int[lA+lB]; int i = 0; int j = 0; int k = 0; while(i < lA && j < lB) { if(arrA[i] <= arrB[j]) trr[k++] = arrA[i++]; else trr[k++] = arrB[j++]; } while(i < lA) trr[k++] = arrA[i++]; while(j < lB) trr[k++] = arrB[j++]; for(i = 0;i<k;++i) { arrA[i] = trr[i]; } delete[] trr; }
参考别人的写的版本从A的后面开始排序
void MergeSortArr1(int arrA[],int lA,int arrB[],int lB){ int *trr = new int[lA+lB]; int i = lA- 1; int j = lB- 1; int k = lA + lB - 1; while (i >= 0 && j >= 0) { if(arrA[i] >= arrB[j]) arrA[k--] = arrA[i--]; else arrA[k--] = arrB[j--]; } while(i >= 0) arrA[k--] = arrA[i--]; while(j >= 0) arrA[k--] = arrB[j--]; }
LeetCode (1) Merge Sorted Array
时间: 2024-11-05 18:36:35