leetcode: 移除元素

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

这一题关键点就是只能用一个额外空间,那么就是说必须在原数组中修改,那么事情就变得简单了,我们可以用两个标记,标记一遍历,标记二写入,等遍历完了,那么也就移除完了。

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution(object):
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
left = 0
right = 0
for i in nums:
if i != val:
nums[left] = nums[right]
left += 1
right += 1

return left

啊~

又是一道简单题,莫得办法,今天云顶之弈s2更新了,太快乐了,9光强无敌= =