想要精通算法和SQL的成长之路 - 双指针【数组】

news/2024/11/27 19:52:08/

想要精通算法和SQL的成长之路 - 双指针【数组】

  • 前言
  • 一. 合并两个有序数组
  • 二. 删除有序数组中的重复项 II

前言

想要精通算法和SQL的成长之路 - 系列导航

一. 合并两个有序数组

原题链接
在这里插入图片描述

抓住重点信息:

  • 两个数组都是非递减顺序排列。
  • num1数组,末尾包含了长度为n的0序列。

思路:

  1. 我们用两个指针n1,n2,分别指向两个数组的末尾(不包含元素0)。从后往前遍历。同时用一个指针right,代表当前遍历到的数组num1的索引(包含元素0)
  2. 遍历的条件就是:n1 >= 0 && n2 >= 0
  3. 遍历终止的情况:如果是num2数组遍历完毕,说明数组合并完成,那么直接返回即可。如果是num1数组遍历完毕,说明num2还有部分元素没有合并到num1中,那么把剩余的num2元素插入到num1的最前端即可。
public void merge(int[] nums1, int m, int[] nums2, int n) {int n1 = m - 1, n2 = n - 1, right = m + n - 1;while (n1 >= 0 && n2 >= 0) {// 从后往前遍历,大的数字先放到末尾nums1[right--] = nums1[n1] > nums2[n2] ? nums1[n1--] : nums2[n2--];}// 把num2中剩余的部分补充到num1的前面即可System.arraycopy(nums2, 0, nums1, 0, n2 + 1);
}

二. 删除有序数组中的重复项 II

原题链接
在这里插入图片描述
在这里插入图片描述

思路:

  1. 我们准备两个指针:leftright,并维护一个count变量。
  2. 当两个指针对应的数字相等的时候,count数加1,如果<=2的时候,给nums[left]赋值,并且左指针向后移动一位。
  3. 当两个指针对应的数字不等的时候,count数重置为1,nums[left]赋值。左右指针同时往后移动一位。

代码如下:

public int removeDuplicates(int[] nums) {int left = 0, count = 1;for (int right = 1; right < nums.length; right++) {if (nums[right] == nums[left]) {count++;if (count <= 2) {nums[++left] = nums[right];}} else {count = 1;nums[++left] = nums[right];}}// 返回的是新数组的长度,因此要在索引的基础上+1.return left + 1;
}

http://www.ppmy.cn/news/1121472.html

相关文章

用《斗破苍穹》的视角打开C#多线程开发1(斗帝之路)

Thread.Start() 是的&#xff0c;我就是乌坦城那个斗之气三段的落魄少爷&#xff0c;在我捡到那个色眯眯的老爷爷后&#xff0c;斗气终于开始增长了。在各种软磨硬泡下&#xff0c;我终于学会了我人生中的第一个黄阶斗技——吸掌。 using System.Threading;namespace Framewo…

玩玩“小藤”开发者套件 Atlas 200I DK A2 之挂载 m2 硬盘

玩玩“小藤”开发者套件 Atlas 200I DK A2 之挂载 m2 硬盘 0. 背景1. 列出所有可用块设备的信息2. 格式化磁盘3. 创建 XFS 文件系统4. 挂载格式化的卷 0. 背景 总所周知&#xff0c;英伟达的GPU供不应求&#xff0c;还各种限制。华为推出了升腾AI可以提供AI算力&#xff0c;那…

【蓝桥杯选拔赛真题62】Scratch判断小球 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch判断小球 一、题目要求 编程实现 二、案例分析 1、角色分析

Java笔记:看清类加载过程

1 类加载的过程 1.1 加载 “加载”是“类加载”(Class Loading)过程的第一步。这个加载过程主要就是靠类器实现的&#xff0c;包括用户自定义类加载器。 加载的过程 在加载的过程中&#xff0c;JVM主要做3件事情 1&#xff09;通过一个类的全限定名来获取定义此类的二进制字节…

PMP-项目收尾过程组的重要性

一、什么是项目收尾过程组 收尾过程组包括为正式完成或关闭项目、阶段或合同而开展的过程。本过程组旨在核实为完成项目或阶段所需的所有过程组的全部过程均已完成&#xff0c;并正式宣告项目或阶段关闭。本过程组的主要作用是&#xff0c;确保恰当地关闭阶段、项目和合同。虽然…

minio报错should be less than or equal解决方案

minio报错should be less than or equal解决方案 问题背景解决方案Lyric&#xff1a; 当作你的请求 问题背景 在进行minio扩容时&#xff0c;报错 parity validation returned an error: parity 4 should be less than or equal to 2 <- (4, 4), for pool(2nd解决方案 mi…

【功能设计】数据分发功能设计

文章目录 设计脑图功能性非功能性 功能设计文档1. 需求分析1.1、功能性需求1.2、非功能性需求 2. 功能设计2.1 业务流程图2.2 数据流图2.3 表结构设计2.4 接口设计2.5 功能点 3.非功能性设计3.1 性能3.2 可用性3.3 并发性3.4 安全性 设计脑图 功能性 非功能性 功能设计文档 1…

差值结构的顺序偏好

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由5张二值化的图片组成&#xff0c;让A 中有5个点&#xff0c;B中有1个点&#xff0c;且不重合&#xff0c;统计迭代次数并排序。 第一种情况 差值结构 迭代次数 L E - - 2 10491.…