Leetcode-Remove Element(Python)

本文介绍了一种算法问题,即在给定数组和一个值的情况下,如何删除数组中所有等于该值的元素,并返回修改后的数组的新长度。文章提供了两种解决方案,包括直接遍历列表删除元素的方法和使用双指针技术进行更高效操作的方法。

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

1 Description(描述)

Given an array nums and a value val, remove all instances of that value in-place and return the new length.
给定一个数组数字和一个值val,删除该值的所有实例并返回新的长度。

Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
不要为另一个数组分配额外的空间,只能通过修改输入数组并且空间复杂度为O(1)。

The order of elements can be changed. It doesn’t matter what you leave beyond the new length.
元素的顺序可以改变。在新的长度之外留下什么并不重要。

Example 1:
Given nums = [3,2,2,3], val = 3,
Your function should return length = 2, with the first two elements of nums being 2.
函数应该返回length = 2,数字的前两个元素是2。
It doesn’t matter what you leave beyond the returned length.
在返回的长度之外留下什么并不重要。

Example 2:
Given nums = [0,1,2,2,3,0,4,2], val = 2,
Your function should return length = 5, with the first five elements of nums containing 0, 1, 3, 0, and 4.
函数应该返回length = 5,数字的前5个元素包含0、1、3、0和4。
Note that the order of those five elements can be arbitrary.
注意,这五个元素的顺序可以是任意的。
It doesn’t matter what values are set beyond the returned length.
在返回的长度之外设置什么值并不重要。

2 Solution(解决方案)

方案一:遍历列表比较每一个元素相同则删除。

def removeElement(nums, val) :
        i = 0
        while i < len(nums):
            if nums[i] == val:
                nums.pop(i)
            else:
                i += 1
        return len(nums)

方案二:双指针,一个指针负责遍历数组,另一个负责指示新数组元素的位置,两个指针所指元素相同则不考虑,不同就交换,指针增加一,最后返回指针。

def removeElement(nums, val) :
        i = 0
        for j in range(len(nums)):
            if nums[j] == val:
                continue
            else:
                nums[i] = nums[j]
                i += 1
        return i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值