LeetCode每日一題: 移動零(No.283)

胖宅老鼠發表於2019-03-31

題目:移動零


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

示例:


輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
複製程式碼

思考:


這道題一般的思路就是迴圈判斷元素是否為0,如果是就移動到陣列末尾。
但是這裡可以換一種思路,將非零元素前移,剩下的陣列位置就是0的位置,全賦值0即可。
複製程式碼

實現:


 class Solution {
 public void moveZeroes(int[] nums) {
    if(nums == null || nums.length == 0){
        return;
    }
    //nonzero記錄非0元素長度
    int nonzero = 0;
    for(int i=0;i<nums.length;i++){
        if(nums[i] != 0) {
            nums[nonzero++] = nums[i];
        }
    }
    //將之後的元素賦0
    while(nonzero < nums.length) {
        nums[nonzero] = 0;
        nonzero++;
    }
 }
 }
複製程式碼

相關文章