1. 程式人生 > >LeetCode #283 移動零

LeetCode #283 移動零

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

示例:

輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0] 說明: 必須在原陣列上操作,不能拷貝額外的陣列。 儘量減少操作次數。

思路: 將0移至陣列末尾==使非零元素前進; 快慢指標,慢指標指向nums[0],快指標遍歷陣列檢索非零元素,將其拷貝至慢指標指向的位置,慢指標前進,重複至遍歷結束,然後慢指標開始遍歷陣列,填零。 程式碼:
/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function(nums) {
    if(nums==null&&nums.length==0){
        return;
    }
    var i=0;
    for(var j=0;j<nums.length;j++){
        if(nums[j]!==0){
            nums[i]=nums[j];
            i++;
        }
    }
    for(;i<nums.length;i++){
        nums[i]=0;
    }
};