博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「LeetCode」合并两个有序数组(JAVA实现)
阅读量:5249 次
发布时间:2019-06-14

本文共 934 字,大约阅读时间需要 3 分钟。

合并两个有序数组

问题描述

给定两个有序整数数组 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]

实现思路

因原数组都是有序数组,只需要从两个数组的最后一个元素开始对比,寻找最大值赋值给最终数组。

  • 如果数组二元素耗尽,则得到最终数组。
  • 如果数组一元素耗尽,则需要将原数组二剩余元素赋值给最终数组。

实现代码

class Solution {    public void merge(int[] nums1, int m, int[] nums2, int n) {        if(m ==0 ) {            System.arraycopy(nums2,0,nums1,0, n);        }        int i1 = m -1;        int i2 = n -1;        while(i2>=0){            if(i1 < 0){                System.arraycopy(nums2,0,nums1,0,i2+1);                break;            }            if(nums1[i1] >= nums2[i2]) {                nums1[i1 + i2 +1]=nums1[i1--];            }else{                nums1[i1 + i2 +1]=nums2[i2--];            }                }            }}

转载于:https://www.cnblogs.com/PlacidZhang/p/10772058.html

你可能感兴趣的文章
Windows 环境下基于 Redis 的 Celery 任务调度模块的实现
查看>>
可编辑路由—Asp.NET MVC项目编译后,修改路由配置可动态加载
查看>>
UESTC 1330 柱爷与远古法阵【高斯消元】
查看>>
Tomcat修改用户名密码教程
查看>>
模块化概念
查看>>
基本排序
查看>>
前端非对称加密,后端Node.js解密(jsencrypt插件)(不需要密钥转码)
查看>>
list删除、集合遍历删除
查看>>
趣谈Java变量的可见性问题
查看>>
图标字体制作 -- 将SVG制作成图标字体文件,通过引入使用
查看>>
为Eclipse添加C/C++开发工具
查看>>
杭州互联网公司汇总
查看>>
Sublime text3 注册失效解决方法
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
hdu 4284 Travel(压缩DP,4级)
查看>>
easy_install
查看>>
hdu 1423 Greatest Common Increasing Subsequence(DP 最长公共上升子序列)
查看>>
【Log4j】分包,分等级记录日志信息
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>