[LC]88题 Merge Sorted Array (合并两个有序数组 )
①英文题目
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
The number of elements initialized in nums1 and nums2 are m and n respectively.
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2.
Example:
Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]
②中文题目:
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
说明:
初始化 nums1 和 nums2 的元素数量分别为 m 和 n。
你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
③思路:这个题,倒序比顺序好做一些。首先想好,用3个变量来索引,i,j,k分别指向num1的末位、nums2的末位,混合后的数组的末位。每次处理完之后,都要减减1下。但其中要注意,只有参与了移动的索引才会减减1下。
用while循环,i和j都大于等于0为条件。 两个数组元素相比,谁大就把谁赋值给混合数组的末位。
另外,当i已经自减为负数而j还为正数(也就是说nums2数组长度比nums1长些)时,直接把剩余还没分配走的nums2的值,一一赋给混合数组的前几位。
由于我就是把nums1当成混合后的数组,所以,当j自减为负数而i还是正数的时候,不用做任何处理了,也就是说,我的代码里的17-21行可以删除掉(我代码里已经写出来方便举例子)。
④代码:
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i=m-1;
int j=n-1;
int k=m+n-1;
while(i>=0 && j>=0){
if(nums1[i]>=nums2[j])
nums1[k--]=nums1[i--];
else
nums1[k--]=nums2[j--];
}
if( j>=0 ){
for(int p=0 ; p<j+1; p++){
nums1[p] = nums2[p];
}
}
// if( i>0 ){
// for(int p=0 ; p<i+1;p++){
// nums1[p]= nums1[p];
// }
//}
}
}
最新文章
- 深入理解java内存模型系列文章
- UILabel顶部对齐解决方法(转载)
- SqlServer获取表结构语句
- [原创]一种简单的cocos2d-x动态更新方案
- Project Server 2013两个权限模型介绍
- sql查询语句心得
- Python获取并修改hosts
- [webapi] 如何在查看api时 显示api的说明
- oracle ebs 分类账与法人主体对应关系
- Ubuntu将新增磁盘挂载到home下
- php中的数组遍历的几种方式
- wineshark分析抓取本地回环包
- 使用 Go-Ethereum 1.7.2搭建以太坊私有链
- Excel 当前行高亮
- pandas聚合aggregate
- python string.py 源码分析 二:capwords
- 分布式的CAP理论
- Fiddler拦截并修改移动端请求
- 4.keras实现-->;生成式深度学习之DeepDream
- 团队作业4--第一项目冲刺3(Aplpha)
热门文章
- PHP array_udiff_uassoc
- Sieve of Eratosthenes时间复杂度的感性证明
- (20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
- opensuse下安装redis
- ESP8266开发之旅 网络篇⑫ 域名服务——ESP8266mDNS库
- 机器学习回顾篇(8):CART决策树算法
- JSP HTML 各种 乱码 解决方法|jsp include html乱码|include 乱码|MyEclipse 中文乱码
- js奥义:原型与原型链(2)
- python的多线程和多进程(一)
- vsftpd超实用技巧详解