1. 程式人生 > >283. 移動零Leetcode

283. 移動零Leetcode

文章目錄

題目描述

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

示例:

輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
說明:

必須在原陣列上操作,不能拷貝額外的陣列。
儘量減少操作次數。

思路及解答

/*
* 思路:
* 需要一個變數k,用來表明當前需要移動的0的位置
* 當前需要移動的0和後面的每一位數進行比較
* 如果後面這個數不是0,則將當前0與後面這個數交換
* 如果後面這個數是0,指標後移,不進行交換操作
*/
class Solution { public void moveZeroes(int[] nums) { for(int i = 0; i < nums.length; i++){ if(nums[i] == 0){ //移動到最後一位 int k = i;//變數k表明當前要移動的0的位置 for(int j = i+1; j < nums.length; j++){ if(nums[j] != 0){ int
temp = 0; temp = nums[j]; nums[j] = nums[k]; nums[k] = temp; k = j;//k指向0移動後的位置 } } } } } }