2020/11/17·Leetcode·移動零

m0_45304160發表於2020-11-17

解法一

時間複雜度:O(N)
空間複雜度:O(1)
執行耗時:0ms
記憶體消耗:38.7MB

class Solution {
    public void moveZeroes(int[] nums) {

		//記錄非零個數
        int j = 0;
        for(int i = 0; i < nums.length; i++){
        	//非零前移
            if (nums[i] != 0){
                nums[j] = nums[i];
                //移動後,原位置置零
                if (i != j){
                    nums[i] = 0;
                }
                //非零個數增加
                j++;
            }
        }
    }
}

解法二

時間複雜度:O(N)
空間複雜度:O(1)
執行耗時:0ms
記憶體消耗:38.8MB

class Solution {
    public void moveZeroes(int[] nums) {
        
        //記錄非零個數
        int notNum0 = 0;
        //非零前移
        for (int i = 0;i<nums.length;i++){
            if (nums[i]!=0){
                nums[notNum0++]=nums[i];
            }
        }
        //後面 nums.length-notNUm0 個為零
        for (int j=notNum0;j<nums.length;j++){
            nums[j]=0;
        }
    }
}

一文一哲理

人這一輩子,怎麼都是過,與其皺眉頭,不如偷著樂

最後麻煩朋友們的小手手點點贊,你們的點贊是我創作最好的動力

相關文章