力扣刷題記錄 283 移動零

2021-10-10 15:58:09 字數 1078 閱讀 7468

難度:簡單

題目描述:

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

示例:

輸入:[0,1,0,3,12]輸出:[1,3,12,0,0]
說明:

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

儘量減少操作次數。

解題語言:c#

方法:雙指標(力扣官方)

思路及解法

使用雙指標,左指標指向當前已經處理好的序列的尾部,右指標指向待處理序列的頭部。

右指標不斷向右移動,每次右指標指向非零數,則將左右指標對應的數交換,同時左指標右移。

注意到以下性質:

左指標左邊均為非零數;

右指標左邊直到左指標處均為零。

因此每次交換,都是將左指標的零與右指標的非零數交換,且非零數的相對順序並未改變。

**

public class solution 

right++;}}

public void swap(int nums, int left, int right)

}

複雜度分析

優化方案:

都知道是0,還換啥?覆蓋,後面補0就行了

class solution 

//第一次遍歷的時候,j指標記錄非0的個數,只要是非0的統統都賦給nums[j]

int j = 0;

for(int i=0;i} //非0元素統計完了,剩下的都是0了

//所以第二次遍歷把末尾的元素都賦為0即可

for(int i=j;i}}

刷題筆記 力扣283 移動零

獲得的思考 獲得的思考 給定乙個陣列nums,編寫乙個函式將所有0移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0 1,0 3,12 輸出 1 3,12 0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。思路 先統計容器中0的個數,刪掉所有的零,並在結尾補零 cla...

力扣日記 283 移動零

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。方法一 class solution def movezeroes self,n...

力扣283 移動零 C

移動零 給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。分析 這個題有兩個要求 1 把零元素移動到陣列末尾 2 保持非零元素的相...