给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例 1:
给定 nums = [3,2,2,3], val = 3,
函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。
你不需要考虑数组中超出新长度后面的元素。
示例 2:
给定 nums = [0,1,2,2,3,0,4,2], val = 2,
解答
因为对于这个数组来说是应用调用的,所以可以直接在数组本身上修改,不需要返回值,那么只需要遍历所有的数找出和所给的数不一样的数给其赋值就可以了
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
j=0
for i in nums:
if i!=val:
nums[j]=i
j=j+1
return j
同样换一种思路我们并不需要把所有数字统一来一遍可以找出特异值的时候将最后一个数与其调换来达到目的,这样就引入了双指针,,后面的指针来控制末尾。