力扣日記 移動零

2021-10-17 11:23:01 字數 678 閱讀 2311

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

示例:

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

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

題解

1.雙指標方法:

分別定義兩個索引從0開始,i指向當前已經處理好的序列的尾部,j指向待處理序列的頭部。

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

即用j遍歷陣列,遇到非零數交換至i,因此非零數被依次換到陣列開頭部分。

時間複雜度 n

public void movezeroes(int nums) 

j++;}}

private int swap(int i, int j, int nums)

2.補零方法:

與雙指標方法類似,遍歷陣列遇到非零數依次賦值到陣列開頭部份,剩餘部分直接賦0即可

時間複雜度 n

public void movezeroes2(int nums) 

}for (int i = j; j < nums.length; j++)

}

力扣日記 283 移動零

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

力扣移動零

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。下面展示一些內聯 片。a code block var foo bar clas...

力扣283 移動零 C

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