給定乙個陣列 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 保持非零元素的相...