题目:

合并排序数组

合并两个排序的整数数组A和B变成一个新的数组。

样例

给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]

挑战

你能否优化你的算法,如果其中一个数组很大而另一个数组很小?

解题:

利用Java的ArrayList很简单的,时间复杂度O(n+m)两个数组都要遍历一遍,对应两个数组长度差别很大的情况,效率就低了

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) {// write your code hereArrayList merge = new ArrayList();int aSize = A.size();int bSize = B.size();int i=0;int j = 0;while(i<aSize && j<bSize){if(A.get(i)<=B.get(j)){merge.add(A.get(i));i++;}else{merge.add(B.get(j));j++;}}while(i<aSize){merge.add(A.get(i));i++;}while(j<bSize){merge.add(B.get(j));j++;}return merge;}
}

View Code

总耗时: 1832 ms

这个好无节操的哦

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) {// write your code hereint bSize = B.size();for(int i=0;i<bSize;i++)A.add(B.get(i));Collections.sort(A);return A;}
}

View Code

总耗时: 1340 ms

Python程序:

Python也可以无节操的来

class Solution:#@param A and B: sorted integer array A and B.#@return: A new sorted integer arraydef mergeSortedArray(self, A, B):# write your code hereA = A + B A.sort()return A 

View Code

总耗时: 454 ms

当然也可以复杂的来了

class Solution:#@param A and B: sorted integer array A and B.#@return: A new sorted integer arraydef mergeSortedArray(self, A, B):# write your code hereC = []aLen = len(A)bLen = len(B)i = 0j = 0while i<aLen or j <bLen:if (i<aLen and j<bLen):if A[i] <= B[j] :C.append(A[i])i+=1else:C.append(B[j])j+=1if i==aLen and j<bLen :C.append(B[j])j+=1if i<aLen and j==bLen:C.append(A[i])i+=1return C

View Code

总耗时: 314 ms

转载于:https://www.cnblogs.com/theskulls/p/4870864.html

lintcode:合并排序数组相关推荐

  1. LintCode 6.合并排序数组 ||

    import org.junit.Test;import java.util.Arrays;public class MergeSort {/*** @param A: sorted integer ...

  2. lintcode: 把排序数组转换为高度最小的二叉搜索树

    题目: 把排序数组转换为高度最小的二叉搜索树 给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树. 样例 给出数组 [1,2,3,4,5,6,7], 返回 4/ \2 6/ \ / \ 1 ...

  3. [LintCode笔记了解一下]64.合并排序数组

    Given two sorted integer arrays A and B, merge B into A as one sorted array. 思路: 因为A的后面的部分都是空的留出来给我们 ...

  4. 九章算法面试题86 合并排序数组

    原文网址 www.jiuzhang.com 问题详情 合并两个排序的整数数组A和B变成一个新的数组. 在线评测本题: http://www.lintcode.com/zh-cn/problem/mer ...

  5. 64. 合并排序数组 II

    合并两个排序的整数数组A和B变成一个新的数组. 样例 给出 A = [1, 2, 3, empty, empty], B = [4, 5] 合并之后 A 将变成 [1,2,3,4,5] 看的出来A后面 ...

  6. [容易]合并排序数组

    题目来源:http://www.lintcode.com/zh-cn/problem/merge-sorted-array-ii/ 先贴一个错误的代码,通过了示例,但是没有通过全部案例: 1 #inc ...

  7. python两个数组合并排序_2、合并排序数组

    1.问题描述 问题描述:合并两个升序的整数数组A和B,形成一个新的数组,新数组也要有序. 2.问题示例 输入A[1],B=[1],输出[1, 1],返回合并后的数组. 输入A=[2, 4, 6, 7] ...

  8. python合并排序数组

    问题描述 合并两个升序的整数列表a和b,形成一个新的列表,新列表也要有序. 问题示例 输入 a = [1,2,3,4] b = [2,4,5,6],输出 [1, 2, 2, 3, 4, 4, 5, 6 ...

  9. 链表节点合并排序:数组和单链表

    每日一贴,今天的内容关键字为链表节点 1 数组合并排序 1.1 合并两个已排序好的数组 需要额定的存储空间用来存储合并结果 //merge two array which are already so ...

最新文章

  1. jzoj3682-Points and Segments【模型转化,欧拉回路】
  2. spring boot自测_将测微仪与Spring Boot 2一起使用
  3. 线程同步有几种方法_架构师面试必问的多线程状态切换及常用方法
  4. Spring Boot 的 GraphQL 框架DGS
  5. php中如何判断目录是否存在文件_PHP判断指定目录下是否存在文件
  6. scala文件通过本地命令运行
  7. 干货来袭丨资产可用性真的是终极目标吗?
  8. 转载:相同版本的JVM和Java应用,在 x86 和AArch64 平台性能相差30%
  9. Mysql数据库课程设计
  10. linux vi 替换字符串,vi字符串替换命令
  11. imx6 rtl8821cs wifi驱动调试
  12. 【已解决】NC65收款合同查询数据最多只显示5000条
  13. 盘点一道使用Python编程来实现高斯计算的基础算术题目
  14. win7系统安装网银助手时提示您尚未正确安装错误的两种解决方法图文教程
  15. 周杰:推荐只是一个新的信息的传播方式
  16. 使用 SendARP 获取 MAC 地址
  17. 忘记密码(找回密码)代码实现
  18. Struts常见错误及原因分析
  19. 桌面搜索项目正式启动
  20. 离开Facebook后,Caffe创始人贾扬清加入阿里巴巴

热门文章

  1. (转)互联网——降级论
  2. 老照片的复活,焕发生机与跃然纸上!这篇CVPR2020的论文彻底火了
  3. 紫为云 2020春招开启!算法职位20K-50K!
  4. ICCV 2019 | 基于全局类别表征的小样本学习
  5. 提高GAN训练稳定性的9大tricks
  6. 【Python】Python实战从入门到精通之二 -- 教你使用Python中列表操作
  7. c语言随机读写信息fetch,北京大学信息科学技术学院考试试卷-计算机系统导论-期中-2015(16页)-原创力文档...
  8. c语言RePutDate用法,住宿结帐管理系统--C语言课程设计.doc
  9. android alarmmanager定时任务,AlarmManager 实现定时任务
  10. linux添加驱动目录,Android系统添加Linux驱动