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…

ElMessageBox 内容自定义

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

pdmaner连接sqlexpress

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

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

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

k8s 上如何跑 Dolphins 模型

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

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…

ES + SkyWalking + Spring Boot:日志分析与服务监控(三)

目录 一、搭建SkyWalking 1.1 版本选择 1.2 下载安装 1.3 配置启动 1.4 SkyWalking UI介绍 二、Springboot项目使用 2.1 Agent下载 2.2 Agent配置skywalking oap地址 2.3 IDEA配置Agent地址 2.4 生成的ES索引介绍 三、在kibana上查看日志 四、问题和解决 3.1 日志…

MySQL45讲 第十三讲 为什么表数据删掉一半,表文件大小不变?

文章目录 MySQL45讲 第十二讲 为什么表数据删掉一半&#xff0c;表文件大小不变&#xff1f;一、引言二、InnoDB 表数据存储方式三、数据删除流程及表空间未回收原因四、重建表以回收表空间五、Online 与 inplace 概念区别六、总结 MySQL45讲 第十二讲 为什么表数据删掉一半&am…

2024年前三季度币安、OKX等五大交易所上币表现分析

随着加密市场竞争的加剧&#xff0c;头部交易所逐渐在上币策略、代币选择、交易活跃度等方面采取了不同的应对策略。Animoca Digital Research近期发布的一份报告&#xff0c;通过对币安、OKX、Bitget、KuCoin和Bybit五大交易所2024年前三季度的上币情况进行了详细分析。本文将…

docker镜像仓库常用命令

docker镜像仓库常用命令 docker logindocker logoutdocker pulldocker pushdocker searchdocker imagesdocker image inspectdocker tagdocker rmidocker image prune docker login 语法: docker login [options] [server] 功能&#xff1a;登录到一个存放docker镜像的仓库&am…

Qt聊天室项目

目录 项目要求 项目背景 技术分析 架构设计 服务器架构 模块划分 模块之间的交互 客户端架构 模块划分 模块之间交互 项目展示 项目实现 服务器 ui server.pro dialog.h dialog.cpp 客户端 ui cient.pro dialog.h dialog.cpp 打包步骤不做演示 视频演示 项目…

MATLAB实现图像恢复设计报告

设计目标及需求分析 设计目标&#xff1a;希望通过matlab设计一个软件来实现对CT图像的模糊再恢复的过程&#xff0c;是对现实中CT图像复原的一个简单仿真。 需求分析&#xff1a;随着网络和通信技术的发展&#xff0c;数字图像处理与分析技术已经在科学研究、工业生产、医疗…