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

代码随想录二刷第二天(Python)

27. 移除元素

题目链接:https://leetcode.cn/problems/remove-element/

题目描述:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例1:输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。

示例2:输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。

题解:

lass Solution:def removeElement(self, nums: List[int], val: int) -> int:fast,slow = 0,0size = len(nums)while fast < size:if nums[fast] != val:nums[slow] = nums[fast]slow += 1fast += 1return slow

总结:此题可以通过暴力解法解出,通过两层循环,一层遍历数组,一层更新数组。另一种解法就是定义快慢指针,快指针遍历数组,如果不是目标值就将该值传给慢指针,然后++,如果是目标值就快指针加1,慢指针不变。

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

题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/

题目描述:给你一个 升序排列 的数组 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 。不需要考虑数组中超出新长度后面的元素。

题解:

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

总结:此题同样可以采用快慢指针法,处理一下快指针指向的值与前一个值是否相等,不相等则将快指针指向的值赋给慢指针。

283. 移动零

题目链接:https://leetcode.cn/problems/move-zeroes/

题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例1:输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例2:输入: nums = [0]
输出: [0]

题解:

class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""fast,slow = 0,0size = len(nums)while fast < size:if nums[fast] != 0:temp = nums[slow]nums[slow] = nums[fast]nums[fast] = tempslow +=1fast += 1return nums

总结:此题采用双指针解法,当快指针指向的不是0,将慢指针暂存,快指针赋给慢指针,暂存的值赋给快指针,遍历数组

844. 比较含退格的字符串

题目链接:https://leetcode.cn/problems/backspace-string-compare/

题目描述:给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。

示例1:输入:s = “ab#c”, t = “ad#c”
输出:true
解释:s 和 t 都会变成 “ac”。

示例2:输入:s = “ab##”, t = “c#d#”
输出:true
解释:s 和 t 都会变成 “”。

题解:

class Solution:def backspaceCompare(self, s: str, t: str) -> bool:def f(s):while '#' in s:i = s.index('#')s = s[:max(i - 1, 0)] + s[i + 1:]return sreturn f(s) == f(t)
http://www.lryc.cn/news/159721.html

相关文章:

  • Mybatis学习笔记1 Mybatis入门
  • Spark 管理和更新Hadoop token 流程
  • Android文件关联
  • java操作adb查看apk安装包包名【搬代码】
  • 【JAVA】Object类与抽象类
  • 【设计模式】二、UML 类图概述
  • 百望云亮相服贸会 重磅发布业财税融Copilot
  • vue 项目代码混淆配置(自定义插件适用)带配置项注释
  • 手写Spring:第7章-实现应用上下文
  • Java(三)逻辑控制(if....else,循环语句)与方法
  • 通过API接口实现数据实时更新的方案(InsCode AI 创作助手)
  • 分类预测 | MATLAB实现PCA-GRU(主成分门控循环单元)分类预测
  • el-dialog无法关闭
  • MATLAB算法实战应用案例精讲-【大模型】LLM算法(最终篇)
  • Mac brew -v 报错 fatal: detected dubious ownership in repository
  • Docker镜像、容器、仓库及数据管理
  • Java的选择排序、冒泡排序、插入排序
  • Vagrant + VirtualBox + CentOS7 + WindTerm 5分钟搭建本地linux开发环境
  • 关于Ajax
  • 打开转盘锁 -- BFS
  • 国标EHOME视频平台EasyCVR视频融合平台助力地下停车场安全
  • 【业务功能篇96】微服务-springcloud-springboot-认证服务-登录注册功能-Auth2.0-分布式session
  • 自造简易版音频进度条
  • 433MHz芯片在遥控应用市场中的优点
  • 基于Bert+Attention+LSTM智能校园知识图谱问答推荐系统——NLP自然语言处理算法应用(含Python全部工程源码及训练模型)+数据集
  • 慕尼黑主题活动!亚马逊云科技生成式AI全新解决方案,引领未来移动出行领域
  • android 离线语言合成(文字转语音)
  • 使用Fastchat部署vicuna大模型
  • 【2023高教社杯】C题 蔬菜类商品的自动定价与补货决策 问题分析、数学模型及python代码实现
  • 华为云云耀云服务器L实例评测|华为云云耀云服务器L实例评测使用