用python刷LeetCode DAY 3:移除元素

本文介绍了如何使用Python解决LeetCode中的移除元素问题,提供了两种方法:一种是利用内置函数快速计数并移除,另一种是使用双指针技巧,尽管双指针方法时间复杂度较高,但在面试中常被提及,因其在数组、链表等问题中具有通用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用python刷LeetCode DAY 3

题目:移除元素

题目要求如下:
请添加图片描述

若使用python内置的函数和方法可以很快求解:

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        for i in range(nums.count(val)):  # 统计nums中元素为val的个数
            nums.remove(val)              # remove一次只能移除一个最靠前的元素,所以有多少个val就要删除多少次
        return len(nums)

请添加图片描述

如果想要自己实现不依赖python内置函数,则需要用到双指针

class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        fast = 0    # 定义快慢两个指针
        slow = 0
        while fast < len(nums):
            if nums[fast] != val:
                nums[slow] = nums[fast]
                slow = slow + 1
            fast = fast + 1
        return slow

请添加图片描述

值得注意的是,在LeetCode上提交代码后,用双指针法通过时长要比第一种方法所用时长更久,但双指针仍然是一种值得掌握的思想,在数组,链表,字符串等面试题中都用经常用到
方法所用时长更久,但双指针仍然是一种值得掌握的思想,在数组,链表,字符串等面试题中都用经常用到

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值