给定一个数组和一个值,在这个数组中原地移除指定值和返回移除后新的数组长度。
不要为其他数组分配额外空间,你必须使用 O(1) 的额外内存原地修改这个输入数组。
元素的顺序可以改变。超过返回的新的数组长度以外的数据无论是什么都没关系。
示例:
给定 nums = [3,2,2,3],val = 3, 你的函数应该返回 长度 = 2,数组的前两个元素是 2。
1.定义两个下标i,j跑,如果val与nums中的都不一样,则两个下标同步;如果nums中出现与val相同的数时,则i开始比j跑得快,i-j为val在nums中出现的次数。
class Solution:
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
i,j,size = 0,0,len(nums)
while i < size:
if nums[i] != val:
nums[j] = nums[i]
j += 1
i += 1
return j
2.利用python内置函数
1).list.index(val)和list.pop([i])
class Solution:
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
while val in nums:
i = nums.index(val)
nums.pop(i)
return len(nums)
2).nums.remove(val)
class Solution:
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
while val in nums:
nums.remove(val)
return len(nums)
3.开始自己写的,突然感觉好水。。。稀里哗啦的
class Solution:
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
i = 0
while i < len(nums):
if nums[i] == val:
nums.remove(nums[i])
else:
i += 1
return len(nums)
######