1. 程式人生 > 其它 >力扣283(java)-移動零(簡單)

力扣283(java)-移動零(簡單)

題目:

給定一個數組 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]

程式碼:

 

變換過程: