LeetCode解题之Remove Element
原题
删除一个数组中某一特定数值的元素。返回删除后的数组长度。
注意点:
- 操作结束后的数字排列顺序不须要与之前同样
- 超出返回长度的部分不须要处理
样例:
输入: nums [1, 2, 3, 4, 3, 2, 1],val = 1
输出: 5解题思路
左右两个指针向中间靠拢,左指针找到一个等于val的值,右指针找到第一个不等于val的值。把右指针指向的值赋值给左指针。继续向中间靠拢。
AC源代码
class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ left = 0 right = len(nums) - 1 while left <= right: while left <= right and nums[left] != val: left += 1 while left <= right and nums[right] == val: right -= 1 if left < right: nums[left] = nums[right] left += 1 right -= 1 return right + 1if __name__ == "__main__": assert Solution().removeElement([1, 2, 3, 4, 3, 2, 1], 1) == 5 assert Solution().removeElement([2], 3) == 1
欢迎查看我的 () 来获得相关源代码。