1. 程式人生 > 資訊 >華為王軍:未來座艙作業系統只有 1 到 2 個,有信心是鴻蒙,關鍵點在 2023~2024 年

華為王軍:未來座艙作業系統只有 1 到 2 個,有信心是鴻蒙,關鍵點在 2023~2024 年

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

例如
定義 nums = [0, 1, 0, 3, 12],呼叫函式之後, nums 應為 [1, 3, 12, 0, 0]。

注意事項:
必須在原陣列上操作,不要為一個新陣列分配額外空間。
儘量減少操作總數。

//第一種的就是 倆個指示數字向中間靠齊;是零的話,後面所有的數字都前移動;

class Solution {
    public void moveZeroes(int[] nums) {
        if(nums.length==0){
            return;
        }
        int n = nums.length;
        for(int i = 0 ; i < n ; i++){
            if (nums[i] == 0){
                for(int j = i+1; j < n; j++){
                    nums[j-1] = nums[j];
                }
                nums[n-1]=0;
                n--;
            }
        }
    }
}

第二種是記錄不是 0 的數字,把它放在前面,後面的再補零;

class Solution {
    public void moveZeroes(int[] nums) {
        if(nums.length==0){
            return;
        }
        int k = 0;
        for (int i = 0; i < nums.length; i++){
            if(nums[i] != 0){
                nums[k] = nums[i];
                k++;
            }
        }
        while(k < nums.length){
            nums[k] = 0;
            k++;
        }
    }
}