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