问题描述
Given an array nums and a value val, remove all instances of that value in-place and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
The order of elements can be changed. It doesn’t matter what you leave beyond the new length
对于给定的输入nums和一个val值,删除nums中所有值为val的元素,返回操作后的array的长度
例子
Given nums = [0,0,1,1,1,2,2,3,3,4],
Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.
It doesn’t matter what values are set beyond the returned length.
2019-06-08 单指针遍历,单指针记录
index = 0
for i in range(len(nums)):
if nums[i]!=val:
nums[index] = nums[i]
index = index + 1
print(nums[:index])
return len(nums[:index])
结果分析
Runtime: 16 ms, faster than 95.94% of Python online submissions for Remove Element.
Memory Usage: 11.8 MB, less than 25.84% of Python online submissions for Remove Element.
直接删除元素
i = 0
while i<len(nums):
if nums[i]!=val:
i = i + 1
else:
del nums[i]
# i = i +1
# print(nums)
return len(nums)
结果分析
Runtime: 20 ms, faster than 88.54% of Python online submissions for Remove Element.
Memory Usage: 11.7 MB, less than 56.00% of Python online submissions for Remove Element.