Merge Sorted Array
来源:互联网 发布:广电怎么看网络电视 编辑:程序博客网 时间:2024/06/06 14:06
问题:将有序数组A和B进行合并,假设A的空间足够,将B合并到A中,并保证合并后有序。
分析:这个问题要是按正常的思路分析,则当需要将B数组的元素插入到A时,A就需要后移,这样的话复杂度就大大增加了,题目中说明A的空间足够,这给了我们提示,我们在前面插入的时候是按升序,从后面的话就是降序,而且不用移动数组。具体过程如下:
初始:index_m = 5, index_n = 3, index = 9.
if( A[index_m] >= B[index_n]) { A[index] = A[index_m]; --index_m; --index; } else if(A[index_m] < B[index_n]) { A[index] = B[index_n]; --index_n; --index; }
这就是逐步处理的过程,有些细节也要注意,就是A、B为空的情况。
class Solution {public: void merge(int A[], int m, int B[], int n) { //m, n may be 0. int index = m + n - 1; int index_m = m - 1; int index_n = n - 1; while(index_n >= 0 && index_m >= 0) { if( A[index_m] >= B[index_n]) { A[index] = A[index_m]; --index_m; --index; } else if(A[index_m] < B[index_n]) { A[index] = B[index_n]; --index_n; --index; } } while(index_n >= 0) { A[index] = B[index_n]; --index_n; --index; } }};
0 0
- [Array]Merge Sorted Array
- LeetCode: Merge Sorted Array
- Merge Sorted Array
- [Leetcode] Merge Sorted Array
- Merge Sorted Array
- [LeetCode] Merge Sorted Array
- Merge Sorted Array
- Merge Sorted Array
- [88]Merge Sorted Array
- Merge Sorted Array
- Merge Sorted Array
- [LeetCode]Merge Sorted Array
- Merge Sorted Array
- [leetcode]Merge Sorted Array
- Merge Sorted Array
- [Leetcode]Merge Sorted Array
- Merge Sorted Array
- Merge Sorted Array
- Android style(样式)和theme(主题)设置
- c++常用函数所在头文件一览
- Verilog中的wire和reg区别
- 描述性统计与性能结果分析
- MySQL性能优化的最佳20+条经验
- Merge Sorted Array
- 1034 forest
- JAVA的Random类(转)
- 比较器报错:Comparison method violates its general contract
- 第5天:散列HASH(二)冲突解决办法之线性再散列法
- ubuntu 连不到外网
- OpenCV247 鼠标选择ROI区域
- 第几天?
- 程序员,在大场面也要hold住