Merge Sorted Array II
- Merge two given sorted integer array A and B into a new sorted integer array.
- Example
- A=[1,2,3,4]
- B=[2,4,5,6]
- return [1,2,2,3,4,4,5,6]
- Challenge
- How can you optimize your algorithm
- if one array is very large and the other is very small?
此题要求返回新数组。由于可以生成新数组,故使用常规思路按顺序遍历即可。
C++:
- class Solution {
- public:
- /**
- * @param A and B: sorted integer array A and B.
- * @return: A new sorted integer array
- */
- vector<int> mergeSortedArray(vector<int> &A, vector<int> &B) {
- if (A.empty()) return B;
- if (B.empty()) return A;
- int aLen = A.size(), bLen = B.size();
- vector<int> C;
- int i = , j = ;
- while (i < aLen && j < bLen) {
- if (A[i] < B[j]) {
- C.push_back(A[i]);
- ++i;
- } else {
- C.push_back(B[j]);
- ++j;
- }
- }
- // A has elements left
- while (i < aLen) {
- C.push_back(A[i]);
- ++i;
- }
- // B has elements left
- while (j < bLen) {
- C.push_back(B[j]);
- ++j;
- }
- return C;
- }
- };
JAVA:
- class Solution {
- /**
- * @param A and B: sorted integer array A and B.
- * @return: A new sorted integer array
- */
- public ArrayList<Integer> mergeSortedArray(ArrayList<Integer> A, ArrayList<Integer> B) {
- if (A == null || A.isEmpty()) return B;
- if (B == null || B.isEmpty()) return A;
- ArrayList<Integer> C = new ArrayList<Integer>();
- int aLen = A.size(), bLen = B.size();
- int i = 0, j = 0;
- while (i < aLen && j < bLen) {
- if (A.get(i) < B.get(j)) {
- C.add(A.get(i));
- i++;
- } else {
- C.add(B.get(j));
- j++;
- }
- }
- // A has elements left
- while (i < aLen) {
- C.add(A.get(i));
- i++;
- }
- // B has elements left
- while (j < bLen) {
- C.add(B.get(j));
- j++;
- }
- return C;
- }
- }
源码分析
分三步走,后面分别单独处理剩余的元素。
复杂度分析
遍历 A, B 数组各一次,时间复杂度 O(n), 空间复杂度 O(1).
Challenge
两个倒排列表,一个特别大,一个特别小,如何 Merge?此时应该考虑用一个二分法插入小的,即内存拷贝。
Merge Sorted Array II的更多相关文章
- Lintcode: Merge Sorted Array II
Merge two given sorted integer array A and B into a new sorted integer array. Example A=[1,2,3,4] B= ...
- [LeetCode] Merge Sorted Array 混合插入有序数组
Given two sorted integer arrays A and B, merge B into A as one sorted array. Note:You may assume tha ...
- 【leetcode】Remove Duplicates from Sorted Array II
Remove Duplicates from Sorted Array II Follow up for "Remove Duplicates":What if duplicate ...
- 【leetcode】Search in Rotated Sorted Array II
Search in Rotated Sorted Array II Follow up for "Search in Rotated Sorted Array":What if d ...
- 50. Remove Duplicates from Sorted Array && Remove Duplicates from Sorted Array II && Remove Element
Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such that e ...
- 43. Merge Sorted Array && LRU Cache
Merge Sorted Array OJ: https://oj.leetcode.com/problems/merge-sorted-array/ Given two sorted integer ...
- 49. Search in Rotated Sorted Array && Search in Rotated Sorted Array II
Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you before ...
- Java for LeetCode 154 Find Minimum in Rotated Sorted Array II
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- [OJ] Find Minimum in Rotated Sorted Array II
LintCode 160. Find Minimum in Rotated Sorted Array II (Medium) LeetCode 154. Find Minimum in Rotated ...
随机推荐
- ubuntu扩展屏幕
1.了解设置的名称 直接运行xrandr(不带任何参数)就可以显示出当前的显示设备及设备的模式. xdj@xdj-Presario-CQ42-Notebook-PC:~$ xrandr Screen ...
- PHP中循环结构之foreach循环语句
在PHP中foreach循环语句,常用于遍历数组,一般有两种使用方式:不取下标.取下标. (1)只取值,不取下标 <?php foreach (数组 as 值){ //执行的任务 } ?> ...
- Python基础-4
目录 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 1.列表生成式,迭代器&生成器 看列表[0, 1, 2, 3, 4, 5, 6, 7, ...
- Java 设计模式 和七大设计原则
创建型模式 抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类. 生成器模式(Builder pattern): 使 ...
- VC维的来龙去脉(转)
本文转自VC维的来龙去脉 本文为直接复制原文内容,建议阅读原文,原文排版更清晰,且原网站有很多有意思的文章. 阅读总结: 文章几乎为台大林老师网课“机器学习可行性”部分串联总结,是一个很好的总结. H ...
- Row_Number() OVER()函数使用举例
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW ...
- Python&Django学习系列之-激活管理界面
1.创建你个人的项目与APP 2.填写你的数据库名称与数据库类型,这里使用内置的sqllite3 3.修改setting文件 a.将'django.contrib.admin'加入setting的IN ...
- timer实现Grid自动换行(连续相同的id跳到下一行)
private { Private declarations } FRow: Integer; procedure SetRow(const Value: Integer); public { Pub ...
- Async异步委托
/// <summary> /// 异步委托 /// </summary> public delegate void AsyncHandler(); public static ...
- [转]sessionStorage()和localStorage()的用法
JS的本地保存localStorage.sessionStorage用法总结: 1. localStorage.sessionStorage是Html5的特性,IE7以下浏览器不支持 为什么要掌握lo ...