LeetCode #27 Remove Element
题目
解题方法
此题也是不允许额外存储空间,根据题意得知最后输出的结果只需要是有效数字的长度,且数组里面前几位包含规定数字即可,考虑采用头尾双指针,从头开始找需要替换的位置,从后开始找需要挪到前面的元素,直到头指针超过尾指针,这时尾指针的位置就是要输出的数组的最后一位,将其加1输出即可。
代码
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
if len(nums) == 1 and nums[0] == val:
nums.pop(0)
return 0
p = 0
q = len(nums) - 1
while p < q:
while p < len(nums)-1 and nums[p] != val:
p += 1
while q >= 0 and nums[q] == val:
q -= 1
if p < q:
nums[p], nums[q] = nums[q], nums[p]
return q + 1

浙公网安备 33010602011771号