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 and nrespectively.

Solution1:新建ArrayList暂存merged list,后放回A

public class Solution {
public void merge(int A[], int m, int B[], int n) {
int length = m+n;
ArrayList<Integer> merge = new ArrayList<Integer>();
int posA =0, posB=0, i=0;
while( i<length){
if(posB>=n){merge.add(A[posA]); posA++; i++;}
else if(posA>=m){ merge.add(B[posB]); posB++; i++;}
else if(A[posA]<=B[posB]){merge.add(A[posA]); posA++; i++;}
else{merge.add(B[posB]); posB++; i++;}
}
for(i=0; i<length;i++){
A[i] = merge.get(i);
}
}
}

Solution2:可不能够不额外开辟空间?利用倒序。

public class Solution {
public void merge(int A[], int m, int B[], int n) {
int position = m+n-1;
while(m>0 && n>0){
if(A[m-1]>=B[n-1]) {
A[position] = A[m-1];
m--; }
else{
A[position] = B[n-1];
n--; }
position--;
}
while(n>0){
A[position] = B[n-1];
n--;
position--;
}
}
}

Solution1:再简单点?

public class Solution {
public void merge(int A[], int m, int B[], int n) { for(int i=m+n-1; i>=0; i--) A[i]=((m>0)&&(n==0 || A[m-1]>=B[n-1]))?A[--m]:B[--n]; }
}

最新文章

  1. Drupal 8.2.4安装简体中文步骤
  2. JAVA基础整理-集合篇(一)
  3. github简单使用教程
  4. mac上的git completion
  5. jquery学习笔记---this关键字
  6. 基于SSH2框架Struts2拦截器的登录验证实现(转)
  7. CSS笔记(八)表格
  8. JS Array常用方法indexOf/filter/forEach/map/reduce详解
  9. 【BZOJ】【3275】Numbers
  10. .net中的特性
  11. VxWorks6.6 pcPentium BSP 使用说明(二):创建启动盘
  12. ASP.NET 5 Overview
  13. Java ClassLoader加载机制
  14. JS 浏览器cookie的设置,读取,删除
  15. Java实现单链表的快速排序和归并排序
  16. 6th-Python基础——集合、函数
  17. ionic3 细节注意
  18. Java -cp 命令查看 zookeeper 日志
  19. 将mysql数据库数据以Excel文件的形式导出
  20. 【慕课网实战】Spark Streaming实时流处理项目实战笔记五之铭文升级版

热门文章

  1. POJ 3481 Double Queue(Treap模板题)
  2. display:table布局总结
  3. a:active在ios上无效解决方法
  4. 飘雪圣域(icekingdom)
  5. jQuery初级
  6. 【一个比较bug free的二分写法】
  7. springboot开启定时任务 添加定时任务 推送
  8. Python之数据结构:序列
  9. 多表的时候怎样在MVC VIEW中显示
  10. css create 多边形 polygon