?歡迎訂閱《leetcode》專欄,每日一題,每天進步?
本題所使用的指標技巧,其實就是快速排序中序列按pivot元素分成兩個分組并找到pivot元素位置的操作的基礎
——leetcode此題熱評

前言
哈嘍,大家好,我是一條,
糊涂演算法,難得糊涂
Question
283. 移動零
難度:簡單
給定一個陣列 nums,撰寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序,
示例:
輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0]說明:
必須在原陣列上操作,不能拷貝額外的陣列, 盡量減少操作次數,
Solution
類似之前的
有序陣列合并依然采用
雙指標法
- 定義兩個指標,一個指向零,一個指向非零,
- 指向非零的指標先移動
- 如果當前元素不等于零,和零指標交換值,并且零指標前進一
同樣的27.移除元素,大家可以練習一下
Code
所有
leetcode代碼已同步至github歡迎
star
/**
* @author yitiaoIT
*/
class Solution {
public void moveZeroes(int[] nums) {
int notZero=0;
int zero=0;
while(notZero<nums.length){
if (nums[notZero]!=0){
int tmp;
tmp=nums[notZero];
nums[notZero]=nums[zero];
nums[zero]=tmp;
zero++;
}
notZero++;
}
}
}
Result
復雜度分析
- 時間復雜度:O(N)

End
更多演算法題歡迎關注專欄《leetcode》
領取學習資料請看左側【關于作者】

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/290416.html
標籤:java
上一篇:Dubbo的優雅下線原理分析
