题目:leetcode 27.
python代码:
解法 1 :
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
i, l = 0, len(nums)
while i < l:
if nums[i] == val:
for j in range(i+1, l):
nums[j - 1] = nums[j]
l -= 1
i -= 1
i += 1
return l
解法 2 :
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
new_length = 0
for i in range(len(nums)):
if nums[i] != val:
nums[new_length] = nums[i]
new_length += 1
return new_length
DEBUG:
暴力解中 if ...... i += 1 的过程并不是if......else的关系,就算满足if条件也要执行 i += 1,也是因为这样if循环中要执行 i -= 1。
while i < l 是一种左闭右开的写法(?)