Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1and nums2 are m and n respectively.

【思路】

我们设置两个指针p1和p2分别指向nums1和nums2,如果nums[p1]<=nums[p2],则p1向后移动,否则的话我们在nums2中找到从p2起所有比nums[p1]小的元素的个数movlen,然后把nums1中p1后(包含p1)的元素向后移动movlen,然后在nums1空出的位置复制nums2中从p2起movlen个元素。p1+=movlen,p2+=movlen。

如果循环结束后nums2中还有元素没有被遍历到,则把这些元素直接加到nums1中。代码如下:

 public class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
if(nums1==null||nums2==null||m+n>nums1.length) return; int totalen = m + n;
int p1 = 0;
int p2 = 0;
int movelen = 0;
while(p1 < m && p2 < n){
if(nums1[p1] <= nums2[p2]) p1++; //nums1指针向后移动
else{
movelen++;
for(int i = p2 + 1; i < n; i++){ //找到nums2中所有比nums1[p1]小的元素的个数
if(nums2[i] < nums1[p1]) movelen++;
else break;
}
for(int j = m - 1; j >= p1; j--){ //nusm1中的元素向后移动
nums1[j+movelen] = nums1[j];
}
for(int k = 0; k<movelen; k++){ //拷贝nums2中的元素
nums1[p1+k] = nums2[p2 + k];
}
p1 = p1 + movelen;
m = m + movelen; //nums1的长度增加
p2 = p2 + movelen;
movelen = 0;
}
}
while(p2 < n){ //如果nums2中还有元素则直接加到nums1的末尾
nums1[m++] = nums2[p2++];
}
}
}
 

LeetCode OJ 88. Merge Sorted Array的更多相关文章

  1. 【LeetCode】88. Merge Sorted Array (2 solutions)

    Merge Sorted Array Given two sorted integer arrays A and B, merge B into A as one sorted array. Note ...

  2. 【一天一道LeetCode】#88. Merge Sorted Array

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given t ...

  3. 【LeetCode】88. Merge Sorted Array 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 新建数组 日期 题目地址:https://leetc ...

  4. 【LeetCode】88 - Merge Sorted Array

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...

  5. LeetCode OJ:Merge Sorted Array(合并排序的数组)

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...

  6. Leetcode No.88 Merge Sorted Array(c++实现)

    1. 题目 1.1 英文题目 You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and ...

  7. Leetcode#88. Merge Sorted Array(合并两个有序数组)

    题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...

  8. LeetCode练题——88. Merge Sorted Array

    1.题目 88. Merge Sorted Array——Easy Given two sorted integer arrays nums1 and nums2, merge nums2 into  ...

  9. 88. Merge Sorted Array【easy】

    88. Merge Sorted Array[easy] Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 ...

随机推荐

  1. cout 格式化的一些方法

    cout格式化的方式有很多,和C中的printf相比较,在实现方式上更加容易理解. 1.计数进制. 1.十六进制:hex 2.八进制:oct 3.十进制:dec(默认) 在控制进制的时候,可以使用两种 ...

  2. jquery 获取当前对象的id取巧验证的一种方法

    <!doctype html><html><head><meta charset="utf-8"><title>titl ...

  3. 将图片转换为base64 格式

    1.页面上的图片,转换成base64格式,可以通过canvas 的 toDataURL 例子:给定图片的url 将图片转换为base64 var imageSrc = "../images/ ...

  4. Java模拟post-get提交

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  5. Maven入门指南 :Maven 快速入门及简单使用

    开发环境 MyEclipse 2014 JDK 1.8 Maven 3.2.1 1.什么是Maven? Maven是一个Java语言编写的开源项目管理工具,是Apache软件基金会的顶级项目.主要用于 ...

  6. mozilla your firefox profile cannot be loaded. it may be missing or inaccessible

    check the permissions ls -l ~/.cache | grep mozilla fix the permissions sudo chown -R $USER:$USER ~/ ...

  7. [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY

    [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY ORDER BY SELECT <列名1>,<列名2>,<列名2>... FROM ORDER B ...

  8. layout布局

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. H3C SecPath 防火墙端口回流

    外网IP地址可以通过域名访问内外800端口网站,内网地址不可以,需要做回流 <<内网口.外网口都需要做nat映射>>定义ACL3001acl number 3001rule 0 ...

  10. centos7 安装openvswitch

    安装 1.安装依赖包:yum -y install openssl-devel wget kernel-devel 2.安装开发工具:yum groupinstall "Developmen ...