地址:点击打开链接
删除数组中所有和输入值相同的元素,遍历删除的时间复杂度很高,移动元素需要耗费大量时间,所以想到定义一个头结点和尾节点,然后将相同元素移到一起,最后一起删除即可,有问题的地方在于最后endIndex需要判断一下
答案:
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
if nums == []:
return 0
begin = 0
endIndex = len(nums) - 1
while begin < endIndex :
if nums[endIndex] == val:
endIndex -= 1
continue
if nums[begin] == val:
nums[endIndex], nums[begin] = nums[begin], nums[endIndex]
begin += 1
else:
begin += 1
if nums[endIndex] == val:
nums = nums[0:endIndex]
else:
nums = nums[0:endIndex+1]
return len(nums)