输入数组和一个目标数字,要求从数组中原位去掉全部目标数字,并返回新数组长度,不要使用额外的存储空间。
思路:
与 Leetcode 026 Remove Duplicates from Sorted Array 思路一致。采用快慢指针,快指针遍历数组,慢指针从零开始,遇到非目标数字时将快指针的数值复制到慢指针处,慢指针前进一位。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ if nums is None or nums == []: return 0 if val not in nums: return len(nums) slow, fast = 0, 0 for fast, fast_val in enumerate(nums): if fast_val == val: continue else: nums[slow] = nums[fast] slow += 1 return slow
|