283. 移动零

回顾@@@@

283. 移动零

思路一:

统计出所有的0元素,将其删除,list末尾补全0的个数。

# ver 1
# n = nums.count(0)
# print(n)
# for i in range(n):
#     nums.remove(0)
# nums.extend([0]*n)
# print(nums)

# ver 2
for i in range(len(nums)):
    if nums[i]==0:
        del nums[i]
        nums.append(0)
return nums

但这种方法,leetcode报错。(为什么gg?)

283. 移动零

思路二:i位置不是0元素,将其交换。j永远停留在0的位置。

accept:

# 思路三: 移动非零元素(操作次数就是非零元素的个数)
j = 0   # 记录非零元素应该换到第几个位置
for i in range(len(nums)):
    if nums[i] != 0:       
        nums[j], nums[i] = nums[i], nums[j]
        j += 1

然后知道了,python交换数组位置只要 283. 移动零

不用引入一个新的变量tmp。 

283. 移动零