原题链接:https://leetcode.com/problems/move-zeroes/
在不改变array离其他元素的顺序的情况下将array里的0移到最后端
有两种解题思路,一种是将非零的元素移到array的前端
class Solution:
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
pos = 0
for i in range(len(nums)):
el = nums[i]
if el != 0:
nums[pos], nums[i] = nums[i], nums[pos]
pos += 1
另外一种是从array中删去0元素,并在最后append一个新的0来实现
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
for i in range(len(nums)-1, -1, -1):
if nums[i] == 0:
del nums[i]
nums.append(0)
顺便复习一下range在python里的用法
range([start], stop[, step])
start: Starting number of the sequence.
stop: Generate numbers up to, but not including this number.
step: Difference between each number in the sequence.
Note that:
All parameters must be integers.
All parameters can be positive or negative.
range() (and Python in general) is 0-index based, meaning list indexes start at 0, not 1. eg. The syntax to access the first element of a list is mylist[0]. Therefore the last integer generated by range() is up to, but not including, stop. For example range(0, 5) generates integers from 0 up to, but not including, 5
网友评论