Merge Sorted Array合并两个有序数组
2016-01-09 12:00
567 查看
Given two sorted integer arrays nums1 and nums2, merge nums2 intonums1 as one sorted array.
Note:
You may assume that nums1 has enough space (size that is greater or equal tom +n) to hold additional elements fromnums2. The number of elements initialized innums1 andnums2 arem and
n respectively.
出处:http://www.programcreek.com/2012/12/leetcode-merge-sorted-array-java/
倒着存入数组nums1,你怎么就没有这个思维呢。真是的。因为nums1后边的空着的啊,所以就倒着装啊,切记切记切记
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
while(m>0&&n>0){
if(nums1[m-1]>nums2[n-1]){
nums1[n+m-1]=nums1[m-1];
--m;
}
else{
nums1[n+m-1]=nums2[n-1];
--n;
}
}
while(n>0){
nums1[n+m-1]=nums2[n-1];
--n;
}
}
}
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i=m-1;
int j=n-1;
int k=n+m-1;
while(k>=0){
if(j<0 || (i>=0 && nums1[i]>nums2[j])) nums1[k--]=nums1[i--];
else nums1[k--]=nums2[j--]; //这种j--的写法很不错
}
}
}
上边两种写法的结合
public class Solution {
public void merge(int A[], int m, int B[], int n) {
int i=m-1;
int j=n-1;
int k=m+n-1;
while(i>=0 && j>=0) A[k--] = A[i] > B[j] ? A[i--] : B[j--];
while(j>=0) A[k--] = B[j--];
}
}
Note:
You may assume that nums1 has enough space (size that is greater or equal tom +n) to hold additional elements fromnums2. The number of elements initialized innums1 andnums2 arem and
n respectively.
出处:http://www.programcreek.com/2012/12/leetcode-merge-sorted-array-java/
倒着存入数组nums1,你怎么就没有这个思维呢。真是的。因为nums1后边的空着的啊,所以就倒着装啊,切记切记切记
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
while(m>0&&n>0){
if(nums1[m-1]>nums2[n-1]){
nums1[n+m-1]=nums1[m-1];
--m;
}
else{
nums1[n+m-1]=nums2[n-1];
--n;
}
}
while(n>0){
nums1[n+m-1]=nums2[n-1];
--n;
}
}
}
public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i=m-1;
int j=n-1;
int k=n+m-1;
while(k>=0){
if(j<0 || (i>=0 && nums1[i]>nums2[j])) nums1[k--]=nums1[i--];
else nums1[k--]=nums2[j--]; //这种j--的写法很不错
}
}
}
上边两种写法的结合
public class Solution {
public void merge(int A[], int m, int B[], int n) {
int i=m-1;
int j=n-1;
int k=m+n-1;
while(i>=0 && j>=0) A[k--] = A[i] > B[j] ? A[i--] : B[j--];
while(j>=0) A[k--] = B[j--];
}
}
相关文章推荐
- SQL 数据库优化 索引,SQL索引优化-技巧
- freemarker集成shiro标签
- MojoShader
- 在mac上搭建python环境
- 一句话概括java接口的意图
- 【搜片APP】自制搜索电影下载资源的搜片器
- 数组中有字典、对字典进行升序,然后运用描述器进行排序,更改字典让中元素的信息iOS 6习题
- VC/MFC程序中获取当前Windows操作系统版本名称(2016-04-25修改)
- UVa 1210 - Sum of Consecutive Prime Numbers
- SpringMVC简单搭建与入门
- ajax查询数据的举例
- APK加壳【2】内存加载dex实现详解
- onActivityResult 不调用的问题
- android SQLite getWritableDatabase VS getReadableDatabase
- Codeforces Round #338 (Div. 2) E. Hexagons 讨论讨论
- 查看oracle锁,kill掉对应session
- 开启 MySql 远程连接功能
- mysql性能优化-慢查询分析、优化索引和配置
- 8.4 数据库审核规范
- Hadoop和大数据:60款顶级大数据开源工具