華為王軍:未來座艙作業系統只有 1 到 2 個,有信心是鴻蒙,關鍵點在 2023~2024 年
阿新 • • 發佈:2022-01-23
給定一個數組 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++; } } }