LeetCode(python3) #27 移除元素

一.解题思路

说明:这题的思考点和#26一样,需要判断哪些操作是原地,哪些不是,所以这题还会有双指针解法。

思路1:一个就是直接通过Python中list remove操作,通过循环判断nums中是否还有重复,有就删除即可。

思路2:双指针操作,i寻找不重复的,j作为起点,匹配到不重复的赋值给j,j加一,最终返回j的数目即可。

二.代码展示

# Python List remove解法
class Solution:
    def removeElement(self, nums, val):
        # 循环判断val是否在nums中,直到不存在就退出循环
        while val in nums:
            # 删除一次重复的值
            nums.remove(val)
        # 剩下的结果都不重复,所以直接返回剩余长度
        return len(nums)
# 双指针解法
class Solution:
    def removeElement(self, nums, val):
        nums_len = len(nums)
        # 寻找不重复的index(快指针)
        i = 0
        # 作为不重复的index(慢指针)
        j = 0
        while i < nums_len:
            if nums[i] != val:
                nums[j] = nums[i]
                j += 1
            i += 1
        return j

三.总结其他

总结:后面会花点时间去看看“原地”的一些操作,总结一下发一篇博客,用于方便记录与学习。

交流:如果有什么建议或者疑问可以在文章下面回复哈,期待交流。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值