力扣283(java)-移動零(簡單)
阿新 • • 發佈:2022-04-13
題目:
給定一個數組 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。
請注意 ,必須在不復制陣列的情況下原地對陣列進行操作。
示例 1:
輸入: nums = [0,1,0,3,12]
輸出: [1,3,12,0,0]
示例 2:
輸入: nums = [0]
輸出: [0]
提示:
1 <= nums.length <= 104
-231 <= nums[i] <= 231 - 1
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/move-zeroes
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解題思路:
兩次遍歷:
1.設定兩個指標i和j,i代表當前 遍歷的位置,j用來計陣列中非0元素的個數;
2.第一次遍歷,將非零元素往前(左)移,第一次遍歷結束,j的下標指向了最後一個非零元素的下一個位置;
3.第二次遍歷,i從j開始遍歷,將剩餘位置的數字全設定為0。
程式碼:
變換過程:
一次遍歷:
設定兩個指標i和j,如果nums[i] != 0, 就交換nums[i]和nums[j]
程式碼:
變換過程: