LeetCode—Merge Sorted Array两个有序数组排序
2015-04-08 14:26
218 查看
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 (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.
这里比较好的一个条件就是数组A是已经给定了存储空间的数组,这样的一个merge函数在归并算法中经常会用到
第一种应该是最愚蠢的做法,重新开辟了一个m+n的内存空间
Note:
You may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.
这里比较好的一个条件就是数组A是已经给定了存储空间的数组,这样的一个merge函数在归并算法中经常会用到
第一种应该是最愚蠢的做法,重新开辟了一个m+n的内存空间
class Solution { public: void merge(int A[], int m, int B[], int n) { int *C = new int[m+n]; int i = 0; int j = 0; int k = 0; while(i < m && j < n) { if(A[i] <= B[j]) { C[k++] = A[i++]; } if(A[i] > B[j]) { C[k++] = B[j++]; } } while(i < m) { C[k++] = A[i++]; } while(j < n) { C[k++] = B[j++]; } for(i = 0; i < k;i++) { A[i] = C[i]; } delete []C; } };但是题目中已经提到A数组是有序的,而且长度很大,应该合理利用这个信息:
class Solution { public: void merge(int A[], int m, int B[], int n) { int i = m-1; int j = n-1; int k= m+n-1; while(i >= 0 && j >= 0) { if(A[i] >= B[j]) { A[k--] = A[i--]; } if(A[i] < B[j]) { A[k--] = B[j--]; } } while(j >= 0) { A[k--] = B[j--]; } } };
相关文章推荐
- leetcode 题解:Merge Sorted Array(两个已排序数组归并)
- [LeetCode] Merge Sorted Array 合并两个有序数组
- [leetcode]Merge Sorted Array (两个有序数组的合并 C语言实现)
- leetcode:Merge Sorted Array(合并两个有序数组到其中一个数组中)【面试算法题】
- 【leetcode】Merge Sorted Array(合并两个有序数组到其中一个数组中)
- Leetcode 88 Merge Sorted Array 合并两个有序数组
- [LeetCode]Merge Sorted Array(合并两个有序的数组)
- LeetCode 88 Merge Sorted Array(合并排序数组)(*)
- LeetCode Merge Sorted Array(合并有序数组)
- 【LeetCode-面试算法经典-Java实现】【088-Merge Sorted Array(合并排序数组)】
- [LeetCode] Merge Sorted Array 混合插入有序数组
- LeetCode-88:Merge Sorted Array (合并两排序数组)
- leetcode88---Merge Sorted Array(合并有序数组)
- LeetCode Merge Sorted Array 合并已排序的数组
- Merge Sorted Array -- 合并两个有序数组
- LeetCode 167. Two Sum II - Input array is sorted,有序数组中的两个元素之和为某个数值,输出这两个元素的索引,且index1<index2
- ※ Leetcode - Array - 88. Merge Sorted Array(快速归并两个有序数组)
- Merge Sorted Array 合并两个有序数组
- 高效合并两个有序数组(Merge Sorted Array)
- Merge Sorted Array合并两个有序数组