首页 > 编程语言 >合并两个有序数组(JAVA)

合并两个有序数组(JAVA)

时间:2023-10-25 10:35:29浏览次数:34  
标签:JAVA 数组 int 有序 index2 index1 nums1 nums2

题外话

在我个人的思路视角里,遇到这种排序问题总是会在脑子里产生一些画面感。让我将这些问题奔着一种奇妙的思路而去,也就是在我脑子里很简答,但难以在代码上复现,我觉得从本我的角度讲我也许天生不适合当一个高级程序员hhhh,但!我命由我不由天!

题解

题目

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

审题

题目中说的是两个小数组都是有序数组,这意味着我们不用再担心插入过程中需要过多复杂的程序来选择两个数组剩余的元素里谁是最大的。很自然的可以想到,只要设置两个指针,分别从两个数组的最后往前寻找,两边谁大就在数组1的后面插入(因为数组1已经设置为了m+n)。

需要知识 for循环,if判断结构
是的,我们只需要掌握for和if就可以将这道题解出来了。

题解

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int index1 = m-1; //nums1数组的移动指针
        int index2 = n-1; //nums2数组的移动指针
        for (int i=m+n-1;i>=0;i--){
          if(index1>=0 && index2>=0){
            if(nums1[index1] > nums2[index2]){
              nums1[i] = nums1[index1];
              index1--;
            }else{
              nums1[i] = nums2[index2];
              index2--;
            }
          }else if(index2>=0){
            nums1[i] = nums2[index2];
            index2--;
          }else{
            break;
          }
        }
    }
}

标签:JAVA,数组,int,有序,index2,index1,nums1,nums2
From: https://www.cnblogs.com/Radioactive/p/17785899.html

相关文章

  • Java文件上传方式
    Java实现文件上传的方式有以下几种:1.通过JavaServlet实现文件上传:在Servlet中,可以通过HttpServletRequest对象的getPart()方法获取文件的Part对象,然后通过Part对象的write()方法将文件写入服务器。2.使用ApacheCommonsFileUpload库:这个库提供了一个简单的API,可以轻松地将文件......
  • Java 基础 05~ 12
    Java基础05~121.Java类型转换inti=128;byteb=(byte)i;// 格式System.out.println(i);//128System.out.println(b);//-128内存溢出​ PS:注意转换的等级,从低位往高位转没问题,从高位往低位转可能内存溢出2.变量、常量、作用域inta=1;Stringn......
  • Java服务总在半夜挂,背后的真相竟然是...
    写在前面最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了问题排查问题复现为了复现该问题,写了个springboot的demo部署在测试环境,其中demo里只做了helloworld功能,应用类型为web_tomcat(war......
  • 3种方法,用Java找出两个List中的重复元素
    本文分享自华为云社区《如何用Java找出两个List中的重复元素,读这一篇就够了》,作者:努力的阿飞。在Java编程中,我们经常需要找出两个列表(List)中的重复元素。在本文中,我们将探讨三种方法来实现这一目标。方法一:使用HashSetJava中的HashSet是一个不允许有重复元素的集合。我们可以......
  • Java队列Queue简述
    概述​ Queue是java中实现队列的接口,它总共只有6个方法,我们一般只用其中3个就可以了。Queue的实现类有LinkedList和PriorityQueue。最常用的实现类是LinkedList。Queue的6个方法分类抛出异常返回特殊值插入add(e)offer(e)删除remove()poll()检查element(......
  • java学习-二维数组&面向对象
    动态初始化格式数据类型[][]变量名=new数据类型[m][n]m表示这个二位数组可以存放多少个以为数组n表示里面的每个一维数组可以存放多少个元素比如int[][]arr=new[3][2]这个就代表里面有3个一维数组,每个一维数组可以存放2个元素存数据arr[0][0]=11arr[0][1]=......
  • javaweb第11章源码
    javaweb第11章源码下载链接:https://wwpv.lanzoue.com/ifkAa1crixqd文件结构CHAPTER11│.classpath│.project│├─.settings│.jsdtscope│org.eclipse.jdt.core.prefs│org.eclipse.wst.common.component│org.eclipse.wst.common.proje......
  • JavaScript知识点
    有哪些数据类型根据JavaScript中的变量类型传递方式,分为基本数据类型和引用数据类型两大类七种。基本数据类型包括Undefined、Null、Boolean、Number、String、Symbol(ES6新增)六种。引用数据类型只有Object—种,主要包括对象、数组和函数。基本数据类型和引用数据类型的区别两者......
  • 数据结构之链表(Java)
    一:概述数组是严格的正规军,那么链表就是灵活多变的地下党链表是一种在物理上非连续、非顺序的数据结构,由若干节点(node)所组成单向链表的每一个节点又包含两部分,一部分是存放数据变量的data,另一部分是指向下一节点的指针next.二:链表的具体说明<1>链表的基本操作总括*链表的基......
  • Java内部类
    Java内部类详解详细解释内部内的一些使用规则的原因概览定义:在一个类的内部定义的类。它的定义位于另一个类的内部,并且可以访问外部类的成员,包括私有成员。为什么要用我觉得一个是为了符合OOP的封装原则,因为毕竟也可以直接把内部类函数和成员放到外面写。另外就是既然可......