【Java】高效解决 非降序数组合并 两种方法

欢迎浏览高耳机的博客

希望我们彼此都有更好的收获

感谢三连支持!

 oj:https://leetcode.cn/problems/merge-sorted-array/submissions/

合并两个有序数组是个经典问题,它不仅在算法学习中频繁出现,也在实际开发中经常遇到。合并数组是一个基础而重要的操作。在Java中,我们有一些方法可以解决这个问题,每种方法都有其独特的优势和适用场景。

首先是第一种,先将两个有序数组合并到nums1中,接着调用Array.sort()方法进行排序,这种方法简单易懂,很容易想到。

 public void merge1(int[] nums1, int m, int[] nums2, int n) {for (int i = 0; i < n; i++) {nums1[m+i] = nums2[i];}Arrays.sort(nums1);}public static void main1(String[] args) {int m = 5;int n = 5;int[] nums1 = {1,2,4,6,7,0,0,0,0,0};int[] nums2 = {1,2,2,4,8};Test test = new Test();test.merge1(nums1,m,nums2,n);System.out.println(Arrays.toString(nums1));}

第二种,使用双指针思想,从末尾开始同时对比nums1与nums2,将较大值放入nums1的末尾,同时对应数组长度-- ,来达到排序的目的。

public void merge2(int[] nums1, int m, int[] nums2, int n) {// 从两个数组的末尾开始比较和合并元素,直到其中一个数组遍历完毕while (m > 0 && n > 0) {// 如果nums2的当前元素大于nums1的当前元素,//则将nums2的当前元素放入nums1的末尾if (nums2[n - 1] > nums1[m - 1]) {nums1[m + n - 1] = nums2[n - 1];n--; // 移动nums2指针向前一位} else {// 否则将nums1的当前元素放入nums1的末尾nums1[m + n - 1] = nums1[m - 1];m--; // 移动nums1指针向前一位}}// 如果nums2中还有剩余元素,将其逐个放入nums1的前面while (n > 0) {nums1[n - 1] = nums2[n - 1];n--;}
}public static void main(String[] args) {int m = 5;int n = 5;int[] nums1 = {1, 2, 4, 6, 7, 0, 0, 0, 0, 0};int[] nums2 = {1, 2, 2, 4, 8}; Test test = new Test(); test.merge2(nums1, m, nums2, n);System.out.println(Arrays.toString(nums1));
}

以上就是该问题的两种解决思想;


希望这篇博客能为你理解java编程思想提供一些帮助。

如有不足之处请多多指出。

我是高耳机。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/688840.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NLP 词嵌入向量即word embedding原理详解

文章目录 1. 前言2. 目标3. CBOW4. 训练结果5. 如何使用6. 延伸7. 参考 1. 前言 现在 NLP 相关的技术大概率会接触到词向量、word embedding&#xff08;词嵌入&#xff09;诸如此类的术语。然后网上一搜&#xff0c;哦&#xff0c;有一个 Word2Vec 的技术&#xff0c;能够把单…

租赁商城小程序基于ThinkPHP+FastAdmin+UniApp(源码搭建/上线/运营/售后/更新)

提供用户物品租赁服务的应用程序&#xff0c;方便客户搭建各种类型的租赁场景服务。通过小程序端多角色进行平台管理&#xff0c;用户租赁商品缴纳租金及押金&#xff0c;员工端可操作商品出库和归还&#xff0c;订单完成后押金原路退回。 ​在线预约和支付&#xff1a;用户可以…

构建内网yum仓库

1、环境介绍 系统&#xff1a;龙蜥os 7.9 2、安装epel源 yum install epel-release -y3、安装nginx服务器并启动 yum install nginx httpd -y配置 server {listen 80;server_name repo.wtown.com;root /usr/share/nginx/html/repo;index index.html index.htm;location / {…

如何批量将十六进制数据转成bin文件

最近在做新项目遇到一个问题&#xff0c;我们要通过上位机把一堆数据通过串口发送给下位机存储&#xff0c;而上位机需要Bin文件。 解决办法&#xff1a; 1)创建一个记事本文件&#xff0c;然后将其后缀修改成.bin 2)然后打开notepad,新建一个文件&#xff0c;随便写下数据 我…

【Git】Git在Gitee上的基本操作指南

文章目录 1. 查看 git 版本2. 从Gitee克隆仓库&#xff1a;3. 复制文件到工作目录&#xff1a;4. 将未跟踪的文件添加到暂存区&#xff1a;5. 在本地提交更改&#xff1a;6. 将更改推送到远程仓库&#xff08;Gitee&#xff09;&#xff1a;7. Windows特定提示&#xff1a; 1. …

动作识别 slowfast动作识别项目记录

动作识别 slowfast动作识别项目记录

pikachu靶场-全套学习

文章目录 配置pikachu靶场浏览器访问过程burpsuite配置代理hackbar安装使用kali安装中国蚁剑暴力破解cookie简化场景解释各部分含义如何工作 基于表单的暴力破解验证码绕过(On server)验证码绕过(on client)token防爆破? XSS&#xff08;Cross-Site Scripting跨站脚本攻击 &am…

使用Baidu Comate五分钟 , 工作时间摸鱼8小时

Baidu Comate&#xff1a;引领智能编码新时代 文章目录 Baidu Comate&#xff1a;引领智能编码新时代一、明日工具&#xff0c;今日领先——百度Comate智能编码助手二、万变不离其宗——适配场景需求三、功能研究3.1 指挥如指掌——指令功能3.2 助手增援——插件功能使用3.3 实…

客户案例:CACTER云网关为企业O365系统提供安全新护盾

一、客户背景 某智能驾驶企业是一家国际性的高科技创新型企业&#xff0c;其智能驾驶领域处于全球领先地位&#xff0c;专注于为广大客户提供个性化的智能驾驶解决方案&#xff0c;共建美好智能新时代。 使用产品&#xff1a;CACTER邮件安全云网关 二、痛点难点问题 根据…

歌手舞台再掀风云

《歌手》舞台再掀风云&#xff0c;重磅消息来袭——国际巨星亚当兰伯特空降踢馆&#xff0c;一场音乐盛宴即将点燃激情&#xff01;消息一出&#xff0c;粉丝欢呼&#xff0c;热议如潮。亚当兰伯特&#xff0c;这位曾让世界为之倾倒的音乐天才&#xff0c;如今即将登陆《歌手》…

MFC中关于CMutex类的学习

MFC中关于CMutex类的学习 最近在项目中要实现两个线程之间的同步&#xff0c;MFC中提供了4个类&#xff0c;分别是CMutex(互斥量)、CCriticalSection(临界区)、CEvent(事件对象)、CSemaphore(信号量)。有关这4个类的说明&#xff0c;大家可以参考微软官方文档&#xff1a; CM…