LeetCode OJ 88. Merge Sorted Array
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的更多相关文章
- 【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 ...
- 【一天一道LeetCode】#88. Merge Sorted Array
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given t ...
- 【LeetCode】88. Merge Sorted Array 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 新建数组 日期 题目地址:https://leetc ...
- 【LeetCode】88 - Merge Sorted Array
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...
- LeetCode OJ:Merge Sorted Array(合并排序的数组)
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...
- 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 ...
- Leetcode#88. Merge Sorted Array(合并两个有序数组)
题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...
- LeetCode练题——88. Merge Sorted Array
1.题目 88. Merge Sorted Array——Easy Given two sorted integer arrays nums1 and nums2, merge nums2 into ...
- 88. Merge Sorted Array【easy】
88. Merge Sorted Array[easy] Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 ...
随机推荐
- HDU------checksum
Quicksum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- python字符串和列表
import sys#sys.argv[0] 被设定为指定模块的全名#脚本名和附加参数传入一个名为 sys.argv 的字符串列表.你能够获取这个列表通过执行 import sys,列表的长度大于等于 ...
- openstack私有云布署实践【18 修改实例DHCP服务的DNS IP】
某天,由于Linux服务器默认没有DNS缓存功能,每次服务器每访问一个http域名链接时,都会触发一次DNS域名解析查询,降低了调用API接口的时延,所以我司后续启用的内网的dnsmasq DNS服务 ...
- python向服务器发送邮件事例
import osimport sysimport re __author__ = 'xiaoming' import requestststr = '<div>\n<ul>\ ...
- vimtutor基础教程
第一讲: 1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键. h (左移) j (下行) k (上行) l (右移) 2. 欲 ...
- <hdu - 1280> 前M大的数 (注意其中的细节)
这是杭电hdu上的链接http://acm.hdu.edu.cn/showproblem.php?pid=1280 Problem Description: 还记得Gardon给小希布置的那个作业么 ...
- matlab里textread出现错误“Trouble reading floating point number from file (row 1, field 1)”
matlab里textread出现错误“Trouble reading floating point number from file (row 1, field 1)” 解决办法:traindata ...
- BGP多线单IP技术实现形式以及其他双线对比
自从电信与网通分离之后,北方网通与南方电信网络的互联瓶颈问题一直没有得到很好的解决,这个问题也严重困扰广大的ICP服务商.ICP也只能根据自己网站主流用户群是在南方还是在北方,服务重点是在南方还是北方 ...
- 迅雷Vip账号共享器(持续更新)
更新日期:2016.5.19 下载地址:https://pan.baidu.com/s/1jIya6My 软件界面: 软件界面: 下载地址:http://pan.baidu.com/s/1pJI47j ...
- python 基础学习1
1.注释 与shell一样,python也是以#开始为注释语句 2.运算符 + - * / // ** python中有2种除法:单斜杠是普通除法,双斜杠是浮点数除法(结果四舍五入) < < ...