题目描述
给定一个数列nums
和数值val
,消除数列nums
中与数值 val
相同的元素,最终返回新数列的长度;要求:不能开辟空间分配新的数列,必须改变原输入nums
数列;并对修改后的nums
数列的元素顺序没有要求,可以被修改。
Examples
nums=[3,2,2,3
;val=3
则返回长度为2;nums=[0,1,2,2,3,0,4,2]
;val=2
则返回长度为5;
其实这道题目与#26消除重复元素差不多,本题指定了消除的元素;不同点在于:首先要判断val
是否一定在nums
内,这一点与消除重复元素不同——一定在其中。
参考实现
方式1
class Solution: def removeElement(self, nums: List[int], val: int) -> int: if val not in nums: #如果不存在指定元素,直接返回数组长度 return len(nums) else: i = 0 while i < len(nums): #找到指定元素 if val == nums[i]: #移除指定元素 nums.pop(i) else: #循环条件 + 1 i += 1 return i
方式2
def removeElement_02(nums: List[int], val: int): nums[:] = [n for n in nums if n != val] return len(nums)
这里借助推导式实现,简洁多看两遍也能理解;
标签:27,-#,val,nums,int,元素,移除,数列 From: https://www.cnblogs.com/wdh01/p/17472592.html