LeetCode26.删除有序数组中的重复项(双指针法)

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

  • 1.问题描述
  • 2.解题思路
  • 3.代码

1.问题描述

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k

示例 1:

输入:nums = [1,1,2]
输出:2, nums = [1,2,_]
解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。

示例 2:

输入:nums = [0,0,1,1,1,2,2,3,3,4]
输出:5, nums = [0,1,2,3,4]
解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。

提示:

  • 1 <= nums.length <= 3 * 104
  • -104 <= nums[i] <= 104
  • nums 已按 非严格递增 排列

2.解题思路

  1. 双指针法(快慢指针法):(和LeetCode27:移除元素方法相同)
  • 快指针:进行数组遍历
  • 慢指针:即将被赋值的位置

将目前位置与前一个位置上的数进行对比,如果一样,就移动指针去下一个位置访问下一个元素。如果不一样,赋值给慢指针。慢指针只要目前为止被填充了新值,就再向后移动一位。

3.代码

python:

class Solution:def removeDuplicates(self, nums: List[int]) -> int:# 指针 i 进行数组遍历n = len(nums)# 指针 j 指向即将被赋值的位置j = 0  #慢指针# 开始对数组进行遍历for  i in range(n): # 进行筛选if  i == 0 or  nums[i] != nums[i - 1] : # 赋值nums[j] = nums[i]# j 移动j += 1# 获取结果return j 

C++:

class Solution {
public:int removeDuplicates(vector<int>& nums) {// 指针 i 进行数组遍历int n = nums.size();// 指针 j 指向即将被赋值的位置int j = 0;// 开始对数组进行遍历for (int i = 0 ; i < n ; i++) {// 进行筛选if ( i == 0 ||  nums[i] != nums[i - 1]) {// 赋值nums[j] = nums[i];// j 移动j++;}}// 获取结果return j ;}
};

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

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

相关文章

php怎么检测字符串是否只含数字

1、用is_numeric()检测一个字符串是否为数字字符串&#xff0c;语法“is_numeric (字符串)”&#xff0c;如果返回TRUE则只含数字,带小数点的也是数字类型 is_numeric(a123) //false is_numeric(123) //true is_numeric(3.14) //true2、用preg_replace()配合正则表达式过滤字符…

基于SSM的学院网站设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Transformers实战——多项选择

文章目录 一、导入相关包二、加载数据集三、数据集预处理四、创建模型五、创建评估函数六、配置训练参数七、创建训练器八、模型训练九、模型预测 !pip install transformers datasets evaluate accelerate 一、导入相关包 import evaluate from datasets import DatasetDict,…

用ScheduledExecutorService接口,Quartz框架等创建定时任务

【点我-这里送书】 本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(…

小程序常见操作

测试时访问本地http服务器调用报错 微信开发者工具&#xff08;右上角&#xff09;-> 详情->本地设置->不校验合法域名、web-view(业务域名)... -> 去除勾选使用npm包 1) 工程目录下创建package.jsonnpm init(手动完成设定) / npm init -y (默认设定) 2) 安装 np…

SAP权限相关的表及如何使用FM获取用户权限

一、SAP权限相关的表 AGR_1016 活动组参数文件名称 AGR_1016B 活动组参数文件名称 AGR_1250 活动组的权限数据(通过权限对象 查 角色) AGR_1251 活动组的权限数据 AGR_1252 …

AVR单片机在机器人视觉导航中的应用研究

AVR单片机在机器人视觉导航中的应用是一项前沿的研究领域&#xff0c;旨在实现机器人在未知环境中的自主导航和避障功能。本文将介绍AVR单片机在机器人视觉导航中的应用原理和实现步骤&#xff0c;并提供相应的代码示例。 1. 导航概述 机器人视觉导航是基于计算机视觉和控制理…

SpringBoot 整合 JdbcTemplate(配置多数据源)

数据持久化有几个常见的方案&#xff0c;有 Spring 自带的 JdbcTemplate 、有 MyBatis&#xff0c;还有 JPA&#xff0c;在这些方案中&#xff0c;最简单的就是 Spring 自带的 JdbcTemplate 了&#xff0c;这个东西虽然没有 MyBatis 那么方便&#xff0c;但是比起最开始的 Jdbc…

c语言回文数

以下是用C语言编写的回文数代码&#xff1a; #include <stdio.h>int main() { int num, reversedNum 0, remainder, originalNum; printf("请输入一个正整数&#xff1a;"); scanf("%d", &num); originalNum num; while (num …

SCAUoj实验11 链表操作

SCAU链表oj题目 文章目录 前言一、堂前习题1099 [填空题]链表的合并 二、堂上练习1098 [填空]链表结点的插入1104 [填空题]链表的倒序1101 [填空题]链表的排序 前言 刚开始学习链表可能会看得比较头晕&#xff0c;关键在于先理解链表的逻辑结构和物理结构&#xff0c;尤其是逻辑…

CMAK Kafka可视化管理工具

CMAK简介 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 CMAK(原名Kafka Manager)。 这个管理工具可以很容易地发现分布在集群中的哪些topic分布不均匀,或者是分区在整个集群分布不均匀的的情况。 它支持管理多个集…

文本分析:NLP 魔法!

一、说明 这是一个关于 NLP 和分类项目的博客。NLP 是自然语言处理&#xff0c;目前需求量很大。让我们了解如何利用 NLP。我们将通过编码来理解流程和概念。我将在本博客中介绍 BagOfWords 和 n-gram 以及朴素贝叶斯分类模型。这个博客的独特之处&#xff08;这使得它很长&…

2023年度中国开源研究报告

截止为2023年11月的中国开源项目数字报告&#xff0c;计算了中国的开源项目的活动指标进行排名&#xff0c;可以看到排名第一的是百度的飞桨PaddlePaddle&#xff0c;前50的排名中人工智能相关的开源项目&#xff0c;占比越来越高&#xff0c;其中使用的编程语言主要有&#xf…

数据在金融行业的应用有哪些

在当今的数字化时代&#xff0c;数据已经成为金融行业不可或缺的一部分。从风险管理、投资决策、客户关系管理到监管合规&#xff0c;数据在金融领域的各个方面都发挥着重要作用。 ​那么&#xff0c;大数据在金融行业有哪些应用呢&#xff1f; 一、数据在金融行业中的应用 1…

单元测试实战(五)普通类的测试

为鼓励单元测试&#xff0c;特分门别类示例各种组件的测试代码并进行解说&#xff0c;供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战&#xff08;一&#xff09;Controller 的测试 单元测试实战&#xff08;二&#xff09;Service 的测试 单元测试实战&am…

Pod详解

Pod详解 1 .Pod介绍 1.1 Pod结构 每个Pod中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类&#xff1a; 用户程序所在的容器&#xff0c;数量可多可少 Pause容器&#xff0c;这是每个Pod都会有的一个根容器&#xff0c;它的作用有两个&#xff1a; 可以以它为…

小米集团收入增长失速已久:穿越寒冬,雷军的路走对了吗?

撰稿|行星 来源|贝多财经 11月20日&#xff0c;小米集团&#xff08;HK:01810&#xff0c;下称“小米”&#xff09;发布了截至2023年9月30日的第三季度业绩公告。 财报显示&#xff0c;在智能手机出货量下行、平均售价下跌的背景下&#xff0c;小米逆势而上&#xff0c;实现…

创建用户报错:ORA-65096: 公用用户名或角色名无效

题主的Oracle版本是最新的Oracle 21 描述&#xff1a; 1、在命令行工具 给Oracle创建用户&#xff0c;create user c##用户名identifed by 密码&#xff0c;报错&#xff1a;【ORA-65096: 公用用户名或角色名无效】 2、在navicat创建用户&#xff0c;提示如下&#xff1a; 解…

Windows系统如何安装与使用TortoiseSVN客户端,并实现在公网访问本地SVN服务器

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统&#xff0c;它与Apache Subversion&#xff08;SVN&#xff09;集成在一起&#xff0c;提供了一个用户友好的界面&#xff0c;方便用…

并行与分布式计算 第8章 并行计算模型

文章目录 并行与分布式计算 第8章 并行计算模型8.1 并行算法基础8.1.1 并行算法的定义8.1.2并行算法的分类8.1.3算法的复杂度 8.2 并行计算模型8.2.1 PRAM (SIMD-SM)模型8.2.3 BSP (MIMD-DM)模型8.2.4LogP&#xff08;MIMD-DM&#xff09;模型 并行与分布式计算 第8章 并行计算…