OJ03:删除有序数组中的重复项

目录

  • 题目
    • 思路分析
    • 代码展示:


题目

—给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

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

示例 1:

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

思路分析

我们受前面的移除元素受启发,也可采用双“指针”的方法:
定义变量 int prev=0,cur=1,nums[cur]与nums[prev]逐一比较。
nums[cur]!=nums[prev],将nums[cur]放入prev的下一个位置,更新prev。
nums[cur]==nums[prev],cur移动。
cur==numsSize,结束。返回prev+1。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

此时prev指向的是最后一个目标元素的,即是最后一个目标元素的下标,所以目标元素的个数是prev+1个,返回++prevj即可;

代码展示:

int removeDuplicates(int* nums, int numsSize) {if (numsSize == 0) //尽管数组的个数不可能为0,为了代码的严谨,我们还是判断一下{return 0;}int prev = 0;int cur = 1;while (cur < numsSize){if (nums[cur] != nums[prev]){nums[prev + 1] = nums[cur];prev++;cur++;}else{cur++;}}return ++prev;
}

其实,这个代码还可以进行一点简化,while循环一般用在我们知道循环几次的情况下,但是这里我们是知道需要循环几次的,这样我们就可以用for循环来代替while循环:

int removeDuplicates(int* nums, int numsSize) {if (numsSize == 0) //尽管数组的个数不可能为0,为了代码的严谨,我们还是判断一下{return 0;}int prev = 0;int cur = 1;for (cur = 1; cur < numsSize; cur++){if (nums[cur] != nums[prev]){nums[prev + 1] = nums[cur];prev++;}}return ++prev;
}

这样是否就可以减少代码的行数,最后,也是通过了leetcode的检测:
在这里插入图片描述
思考
那么如果给你一个无序的数组,去除重复的元素,该如何设计程序?敬请关注小编的下一篇文章;

26考研加油!


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

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

相关文章

DistilQwen2:通义千问大模型的知识蒸馏实践

作者&#xff1a;岳元浩&#xff08;顾城&#xff09;、汪诚愚&#xff08;熊兮&#xff09;、严俊冰&#xff08;玖烛&#xff09;、黄俊&#xff08;临在&#xff09; 背景 在人工智能快速发展的今天&#xff0c;大语言模型已经成为了人工智能的研究热点。其中&#xff0c;…

程序员也要认识下“信创产业”

兄弟姐妹们&#xff0c;大家初入社会会觉得技术是第一位&#xff0c;我呸&#xff0c;其实你在那个领域敲代码的选择才是最重要的&#xff0c;选对了领域绝对比你背上100个面试题目强&#xff0c;今天带大家了解下信创产业。 信创产业&#xff0c;即信息技术应用创新产业&#…

Rust 力扣 - 1423. 可获得的最大点数

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 题目所求结果存在下述等式 可获得的最大点数 所有卡牌的点数之和 - 长度为&#xff08;卡牌数量 - k&#xff09;的窗口的点数之和的最小值 我们遍历长度为&#xff08;卡牌数量 - k&#xff09;的窗口&#…

前端实现json动画(附带示例)

前端实现json动画&#xff08;附带示例&#xff09; 使用lottie制作动画。1.json动画2.实现效果3.git仓库4.运行5.json动画天堂6.代码7. 经常使用的方法 使用lottie制作动画。 1.json动画 废话不多说&#xff0c;直接看效果图2.实现效果 3.git仓库 https://gitee.com/chaiach…

[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DarkHole:1 通关详解 (附靶机搭建教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

成都睿明智科技有限公司共赴抖音电商蓝海

在这个短视频风起云涌的时代&#xff0c;抖音作为现象级的社交媒体平台&#xff0c;不仅改变了人们的娱乐方式&#xff0c;更悄然间重塑了电商行业的格局。在这片充满机遇与挑战的蓝海中&#xff0c;成都睿明智科技有限公司凭借其敏锐的市场洞察力和专业的服务能力&#xff0c;…

Centos 网络接口打vlan标签

Centos 网络接口打vlan标签 本次使用给bond打vlan标签&#xff0c;其实其他普通接口也一样 Centos创建bond前需要关闭NetworkManager [root192 network-scripts]# systemctl disable NetworkManager --now Removed symlink /etc/systemd/system/multi-user.target.wants/Netwo…

github - ssh 配置 key、下载repo

1、设置位置 https://github.com/settings/keys 2、生成 Key ssh-keygen -t rsa -b 4096 -C "xx@x.com" 成功后,查看 cat ~/.ssh/id_rsa.pub 得到数据类似: ssh-rsa AAAAB3NzaC1yc2EA...4thQm4FKtB/c= xx3、下载代码 下载方式,选择 ssh,但使用 git clone 下…

ElMessageBox 内容自定义

1. ElmessageBox弹出框显示内容设置字体颜色&#xff1a; 代码内容&#xff1a; const saveToGroup (row: Customers) > {ElMessageBox.confirm(h("i",{ style: "color: #409EFF" },"未建档客户公司无法创建线索/商机/礼品申请。"),"…

基于STM32设计的物联网火灾感知系统(259)

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能1. 环境温湿度监测2. 火焰检测3. 烟雾浓度监测4. 声光报警5. 数据上传至云端6. Android手机应用交互7. OLED显示屏信息展示【3】项目硬件模块组成1. 主控芯片2. 温湿度传感器3. 火焰传感器4. 烟雾传感器5. 蜂…

Go语言与数据库操作:从连接到CRUD

Go语言(Golang)以其高效性和并发性广受欢迎,而与数据库的交互则是任何应用程序不可或缺的一部分。本文将介绍Go语言如何与数据库进行操作,包括连接、基本的增删改查(CRUD)操作,以及常用的数据库库。 一、Go语言的数据库操作库 在Go语言中,进行数据库操作通常有两种方…

pdmaner连接sqlexpress

别以为sqlserver默认的端口总是1433 案例 有台sqlserver2008 express服务器&#xff0c;刚安装&#xff0c;支持混合模式登录&#xff0c;其它什么配置也没改。 先看用ADO连接 这说明&#xff1a; 案例中sqlserver端口不是1433 &#xff01;&#xff01;&#xff01;ADO连接…

【青牛科技】GC4931P替代A4931/Allegro在水泵、筋膜枪、吸尘器和电动工具中的应用

随着电动设备技术的不断发展&#xff0c;对电机驱动控制器的需求也在不断增加。GC4931P作为一种新型的电机驱动控制器&#xff0c;逐渐被视为A4931/Allegro的替代品。本文将探讨GC4931P在水泵、筋膜枪、吸尘器和电动工具等设备中的应用优势及其特点。 1. GC4931P的技术优势 G…

使用MongoDB Atlas构建无服务器数据库

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用MongoDB Atlas构建无服务器数据库 MongoDB Atlas 简介 注册账户 创建集群 配置网络 设置数据库用户 连接数据库 设计文档模式…

MySQL的sql练习,适合初学者

通过两张表&#xff0c;emp&#xff0c;dept 来演示mysql的sql语句 dept表 CREATE TABLE dept (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL );emp表 CREATE TABLE emp (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,age INT,sex VARCH…

k8s 上如何跑 Dolphins 模型

接着上一篇的介绍&#xff0c;这一篇就来跑跑 Dolphins 模型&#xff0c;本篇会记录&#xff0c;跑模型常见的阬点。 1 在 k8s 上创建 pod 将外部数据挂载在 pod 里&#xff0c;并申请 gpu 资源。同时修改代码里对应的引入数据的路径 # dolphins.yaml apiVersion: v1 kind: …

Maven(27)如何使用Maven进行依赖管理?

Maven是一个强大的项目管理工具&#xff0c;它通过pom.xml文件来管理项目的依赖、构建和部署。以下是如何使用Maven进行依赖管理的详细步骤&#xff0c;包括代码示例&#xff1a; 步骤 1: 创建或打开pom.xml 在项目的根目录下&#xff0c;找到或创建pom.xml文件。这是Maven项…

MySQL数据表导入到clickhouse数据库中

前言&#xff1a;研发需求&#xff0c;需要把MySQL数据导入到clickhouse中来测试计算性能是否提升。 从MySQL导入到clickhouse需要两个工具 NavicatDBeaver 导出MySQL数据 连接上MySQL>选择数据库>选择数据表 选择csv格式 导出数据 下面全部默认即可 开始导出 …

Spring Boot 与 Vue 共筑二手书籍交易卓越平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

零基础Java第十三期:继承与多态(一)

目录 一、继承 1.1. 继承的目的 1.2. 继承的概念 1.3. 继承的语法 1.4. 父类的访问 1.5. 继承中的重载与重写 1.6. 子类的构造方法 1.7. 再谈初始化 一、继承 1.1. 继承的目的 我们来定义一个Dog和Cat的类&#xff1a; public class Dog {public int age;public Strin…