leetcode 283. 移動零
- 問題描述
- 解決思路
問題描述
給定一個數組 nums,編寫一個函數将所有 0 移動到數組的末尾,同時保持非零元素的相對順序。
示例:
輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:
必須在原數組上操作,不能拷貝額外的數組。
盡量減少操作次數。
解決思路
定義一個p指針,初始指向數組的首元素,同時對數組進行周遊,當數組目前元素為0時,i++;當目前的數組元素不為0時,将此時的元素與p指針所指向的元素進行交換。周遊完數組即可。
var moveZeroes = function(nums) {
let p = 0;
for (let i=0 ; i < nums.length ; i++ ) {
if ( nums[i] ) {
if ( i!=p ) {//如果目前元素不為0則不進行交換
[nums[p], nums[i]] = [nums[i], nums[p]];
p++;
} else {
p++;
}
}
}
};