当前位置: 首页 > news >正文

LeetCode | 26.删除有序数组中的重复项

在这里插入图片描述
在这里插入图片描述
在我接触到这道题的时候想的就是一次遍历,设置两个变量记录当前遍历到的数字和对应原数组应该修改的index,在运行过程中,因为原数组已经是有序的了,只不过会存在重复的数字,但是这些重复的数字也是挨在一起的,所以我们默认nums的第一个元素不用做修改,currentNum就等于nums[0],index也直接从1开始,往后遍历,如果遇到数字和currentNum相等的,就是重复的数字,直接跳过即可,遇到不相等的就是我们要记录在nums中index所在位置的数字,直接令currentNum等于这个数字,修改对应nums相应位置的数字并往后进行,直到程序结束即可

class Solution(object):def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""i, index = 1, 1currentNum = nums[0]while i < len(nums):while nums[i] != currentNum:currentNum = nums[i]nums[index] = currentNumindex += 1i += 1return index

在这里插入图片描述

看了题解,我的思想类似与题解中的快慢指针解法,首先注意数组是有序的,那么重复的元素一定会相邻。要求删除重复元素,实际上就是将不重复的元素移到数组的左侧。考虑用 2 个指针,一个在前记作 p,一个在后记作 q,算法流程如下:比较 p 和 q 位置的元素是否相等,如果相等,q 后移 1 位,如果不相等,将 q 位置的元素复制到 p+1 位置上,p 后移一位,q 后移 1 位。重复上述过程,直到 q 等于数组长度。
返回 p + 1,即为新数组长度。

题解:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/solutions/34033/shuang-zhi-zhen-shan-chu-zhong-fu-xiang-dai-you-hu/

在这里插入图片描述

class Solution:def removeDuplicates(self, nums: List[int]) -> int:if not nums:return 0n = len(nums)fast = slow = 1while fast < n:if nums[fast] != nums[fast - 1]:nums[slow] = nums[fast]slow += 1fast += 1return slow

相关文章:

  • 【深度学习】深度学习之巅:在 CentOS 7 上打造完美Python 3.10 与 PyTorch 2.3.0 环境
  • 【问题解决】HttpURLConnection如何以POST的方式发送请求,传递form表单格式的数据到外部接口
  • AIGC之MetaHuman:HeyGen(基于AI驱动的视频生成平台+数字人)的简介、安装和使用方法、案例应用之详细攻略
  • C#开源软件:OneNote组件oneMore轻松打造自己的公众号编辑器
  • python如何判断变量是否是字符串
  • 基于springboot高校就业招聘系统的设计
  • 如何将jpg图像添加文字并转换成无压缩的dicom图像
  • 前端传递bool型后端用int收不到
  • ubuntu18.04离线源制作
  • qmt量化交易策略小白学习笔记第16期【qmt编程之获取北向南向资金(沪港通,深港通和港股通)】
  • 04-4.1.2 串的存储结构
  • 每日5题Day22 - LeetCode 106 - 110
  • windows上安装MongoDB,springboot整合MongoDB
  • vllm 使用FP8运行模型
  • iMazing3软件安装包下载
  • 《深入 React 技术栈》
  • 【comparator, comparable】小总结
  • 【EOS】Cleos基础
  • canvas 高仿 Apple Watch 表盘
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Travix是如何部署应用程序到Kubernetes上的
  • 大主子表关联的性能优化方法
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 七牛云假注销小指南
  • 前端技术周刊 2019-02-11 Serverless
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Python) SOAP Web Service (HTTP POST)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (理论篇)httpmoudle和httphandler一览
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十一)图像的罗伯特梯度锐化
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (算法)求1到1亿间的质数或素数
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)关于pipe()的详细解析
  • (转载)深入super,看Python如何解决钻石继承难题
  • ****Linux下Mysql的安装和配置
  • **python多态
  • ./configure,make,make install的作用
  • .NET C# 使用 iText 生成PDF
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .Net core 6.0 升8.0
  • .net framework 4.8 开发windows系统服务
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net通用权限框架B/S (三)--MODEL层(2)
  • /*在DataTable中更新、删除数据*/
  • // an array of int
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现