一、自己思路:
1.思路:双指针法:迭代慢指针,当发现相同元素时,将快指针从下一个元素开始进行循环,若发现不同的值,则进行元素交换。需要判断什么时候全部交换完毕了,设置flag
2.代码:
class Solution:
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
for i in range(len(nums)):
flag=True
if nums[i]!=val:
continue
else:
for j in range(i+1,len(nums)):
if nums[j]==val:
continue
else:
flag=False
tmp=nums[j]
nums[j]=nums[i]
nums[i]=tmp
i=i+1
if flag==True:
return i
二、更简单的思路:
思路:迭代快指针,当快指针与指定值不相等时,将快指针的值赋值为慢指针,最后返回慢指针即可
代码:
class Solution:
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
i=0
for j in range(0,len(nums)):
if nums[j]!=val:
nums[i]=nums[j]
i=i+1
return i
三、利用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)