第一种:直接去除数组中与给定值相等的元素
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
while val in nums:
nums.remove(val)
return len(nums)
第二种 双指针
采用双指针,使得数组中与目标相同的元素全放到数组后方
运行到代码的return left就能返回剩下数组的长度,return left之后是为了返回剩余的数组元素
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
left =0
right=len(nums)-1
while left<right:
if nums[left]==val and nums[right]!=val:
nums[left],nums[right]=nums[right],nums[left]
elif nums[left]!=val:
left+=1
elif nums[right]==val:
right-=1
res=0
for i in range(len(nums)):
if nums[i]!=val:
res+=1
return res