leetcode 283 移動零 快慢指標

2021-10-02 16:30:10 字數 484 閱讀 7153

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。

示例:輸入: [0,1,0,3,12]

輸出: [1,3,12,0,0]

說明:必須在原陣列上操作,不能拷貝額外的陣列。

儘量減少操作次數。

思路雙指標法。這道題目相當經典,將所有 0 移動到陣列的末尾,分為兩步,第一是將非0數填充到開頭,第二是將末尾補0。

用乙個慢指標slow來表示當前需要填充的位置,在用乙個快指標i找到非0陣列,找到填充到慢指標指示的位置,慢指標+1,表示填充下乙個位置,在這個一直有slow<=i,所以訪問到i時,這個位置的值要麼已經處理過,要麼和慢指標指向的是同乙個位置,覆蓋操作也不會導致任何資料的丟失。

class

solution

}for

(int i=slow;i)nums[i]=0

;}}

LeetCode283 移動零(簡單)

原題目給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。題目大意 將陣列所有的零移至末尾,且不改變其他數字的順序,且只能開闢常數級...

leetcode 283 移動零,雙指標解法

題目描述 給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。public void movezeroes int nums 思路 ...

leetcode 283 移動零 單指標方法

題解是雙指標,但其實單指標就足夠了。每次遍歷把零元素存起來,這樣交換後交換的零元素也在後面,一次遍歷就可以結束。from collections import deque class solution def movezeroes self,nums list int none do not ret...