“三指针法“合并两个有序数组(力扣每日一练)

        我的第一想法确实是:先合并数组,再排序,搞完。

        哈哈哈,想那么多干嘛,目的达成了就好了。

力扣官方题解是双指针:

还有糕手:

Python:
def merge(nums1, m, nums2, n):# 两个指针分别指向 nums1 和 nums2 的最后一个元素p1 = m - 1p2 = n - 1# 指向 nums1 的最后一个位置p = m + n - 1# 当 nums1 和 nums2 都还有元素时,比较它们的最后一个元素并将较大的元素放在 nums1 的正确位置上while p1 >= 0 and p2 >= 0:if nums1[p1] < nums2[p2]:nums1[p] = nums2[p2]p2 -= 1else:nums1[p] = nums1[p1]p1 -= 1p -= 1# 如果 nums2 还有剩余元素,将它们复制到 nums1 的剩余位置上nums1[:p2 + 1] = nums2[:p2 + 1]
C#:
public void Merge(int[] nums1, int m, int[] nums2, int n) {int p1 = m - 1;int p2 = n - 1;int p = m + n - 1;while (p1 >= 0 && p2 >= 0) {if (nums1[p1] < nums2[p2]) {nums1[p] = nums2[p2];p2--;} else {nums1[p] = nums1[p1];p1--;}p--;}while (p2 >= 0) {nums1[p] = nums2[p2];p--;p2--;}
}

     

总结

        可以称之为"三指针" 方法,因为我们同时使用了三个指针(p1、p2 和 p)来操作和遍历两个数组。每个指针都有其特定的用途:

  • p1 指向 nums1 中的元素
  • p2 指向 nums2 中的元素
  • p 指向 nums1 中应该放置下一个元素的位置

        然而,你也可以将其视为 "双指针" 方法,如果你将 p 视为一个辅助变量,而不是一个 "指针"。在这种情况下,"双指针" 是指 p1 和 p2,它们分别遍历 nums1 和 nums2。这种分类主要取决于你如何定义 "指针"。

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

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

相关文章

深入理解 Flink(六)Flink Job 提交和 Flink Graph 详解

Flink Program 编程套路回顾 1、获取执行环境对象 StreamExecutionEnvironment env StreamExecutionEnvironment.getExecutionEnvironment(); 2、通过执行环境对象&#xff0c;注册数据源 Source&#xff0c;得到数据抽象 DataStream ds env.socketTextStream(...) 3、调用数…

PostgreSQL内存浅析

体系结构 &#xff08;https://www.postgresql.fastware.com/blog/lets-get-back-to-basics-postgresql-memory-components&#xff09; &#xff08;http://geekdaxue.co/read/fcantsql/qts5is) 共享内存 linux的共享内存实现 (https://momjian.us/main/writings/pgsql/insi…

Blazor快速开发框架Known-V2.0.0

Known2.0 Known是基于Blazor的企业级快速开发框架&#xff0c;低代码&#xff0c;跨平台&#xff0c;开箱即用&#xff0c;一处代码&#xff0c;多处运行。 官网&#xff1a;http://known.pumantech.comGitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;ht…

【Linux】Linux 系统编程——tree 命令

文章目录 1. 命令概述2. 命令格式3. 常用选项4. 相关描述4.1 tree 命令安装 5. 参考示例5.1 创建树形目录5.2 使用 tree 命令查看树形目录 1. 命令概述 tree 命令用于在命令行界面以树状图形式显示目录及其子目录的内容。这个命令递归地列出所有子目录&#xff0c;并可选择显示…

品牌渠道治理思路浅谈

渠道是否管控好&#xff0c;体现在渠道中有无低价链接&#xff0c;或者是低价数据的占比是否较低&#xff0c;如果打开电商平台&#xff0c;搜索一款产品的价格&#xff0c;有很多链接的价格低于旗舰店价格&#xff0c;这显然不是一个健康的渠道表现&#xff0c;所以治理渠道就…

odoo linux环境打印乱码或无内容

在odoo打印中会遇到乱码或者无内容显示&#xff0c;需要安装一些包 sudo apt-get install ttf-wqy-zenhei sudo apt-get install ttf-wqy-microhei安装前 安装后

mysql清空并重置自动递增初始值

需求&#xff1a;当上新项目时&#xff0c;测试环境数据库导出来的表id字段一般都有很大的初始递增值了&#xff0c;需要重置一下 先上代码&#xff1a; -- 查看当前自动递增值 SHOW CREATE TABLE table_name; -- 重建自动递增索引&#xff08;可选&#xff09; ALTER TABLE t…

UNIX网络编程-纪要

网络编程 网络协议模型网络中的一条连接 套接字编程字节序套接字地址结构socket创建套接字UNIX域套接字tcp套接字函数注意点TCP绑定端口问题 TIME_WAIT状态使用TCP编程注意点使用UDP编程注意点网络中数据大小的限制客服端-服务器交互问题网络数据读写问题常见套接字选项设置套接…

GitHub访问慢:分享两个镜像加速网站

GitHub网站&#xff0c;不知道是不是因为我的网络问题&#xff0c;最近一直断断续续&#xff0c;不稳定。非常难受。找到两个镜像网站&#xff0c;使用体验很不错&#xff0c;作以分享&#xff01; GitHub官方网站 官网&#xff1a;https://github.com/ 两个镜像网站分享 1.…

MySQL——SQL语句进阶

select * from 表 where 条件 group by 条件 order by 排序 limit 分组 Group by select * from 表 group by 条件 结果为每个分组的第一条记录&#xff0c;该条记录作为该组的标志 select * from subject GROUP BY gradeidselect count(1),gradeid from subject GROUP B…

图解JVM (及一些垃圾回收\GC相关面试题 持续更新)

垃圾回收&#xff0c;顾名思义就是释放垃圾占用的空间&#xff0c;从而提升程序性能&#xff0c;防止内存泄露。当一个对象不再被需要时&#xff0c;该对象就需要被回收并释放空间。 Java 内存运行时数据区域包括程序计数器、虚拟机栈、本地方法栈、堆等区域。其中&#xff0c;…

JVM:从零到入门

JVM&#xff0c;就是Java虚拟机。 JVM是一个巨大的话题&#xff0c;我们本文主要简单介绍一些围绕JVM相关的基础知识。 目录 JVM内存区域划分 本地方法栈 虚拟机栈 堆 程序计数器 方法区/ 元数据区 类加载 1.加载 2.验证 3.准备 4.解析 5.初始化 双亲委派模型 …