前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode27(移除元素)

LeetCode27(移除元素)

作者头像
武师叔
发布2022-09-26 17:27:33
5250
发布2022-09-26 17:27:33
举报

每日一题——LeetCode27(移除元素)

https://www.bilibili.com/video/BV1e44y1A73h

题目

27.移除元素

难度:简单

给你一个数组 nums 和一个值 val,你需要 *原地* 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 ****原地 **修改输入数组**。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

方法一:暴力解法(搞笑的,天真了)

我尽然第一个想到的是python中列表的remove()函数,我还以为我秀了leecode一脸(心理想,TM的这莫简单,还让老子设计算法)最后还是我天真了!

所以一定要注意:数组元素是不能删除的,只能覆盖

方法二:双指针法(正式解法)

讲解视频双指针解决删除列表中的元组-CSDN直播

代码语言:javascript
复制
class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        fast = 0
        low = 0
        while fast < len(nums):
            if nums[fast] != val:
                nums[low] = nums[fast]
                low += 1
            fast += 1
        return low

B站视频中的所谓收集的方法:

思路:我们让 a 一直往后移动,相当于 nums[a] 从数组第一个数遍历到最后一个数。 当且仅当我们发现 nums[a] != val 的时候,我们把这个数拷贝到 b 指向的位置,默认 b 是从 0 开始的,然后 b += 1 指向下一个位置。这样我们就保证了前 b 个数,就是我们要的结果。不重复的数。

代码语言:javascript
复制
class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        a = 0
        b = 0

        while a < len(nums):
            if nums[a] != val:
                nums[b] = nums[a]
                b += 1
            a += 1

        return b
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 每日一题——LeetCode27(移除元素)
    • 题目
      • 方法一:暴力解法(搞笑的,天真了)
        • 方法二:双指针法(正式解法)
        相关产品与服务
        云直播
        云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档