leetcode_283_移動零
阿新 • • 發佈:2020-11-19
給定一個數組 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。
示例:
輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:
必須在原陣列上操作,不能拷貝額外的陣列。
儘量減少操作次數。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/move-zeroes
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
#方法1:快慢雙指標 class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ p1=p2=0 length_of_nums=len(nums) #如果p2指向的值是0,p2++,否則與p1指向的值交換,p1左邊是已經處理好的數 while(p2<length_of_nums): if nums[p2]!=0 : nums[p1],nums[p2]=nums[p2],nums[p1] p1+=1 p2+=1
#方法2:單指標,先把不是0個向前移到指標的位置 class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ p1=0 length=len(nums) for x in nums: if x!=0: nums[p1]=x p1+=1 for t in range(p1,length): nums[t]=0