LeetCode,Go 把數組裏的零全部移動到結尾
力扣題目:
給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。
示例:
輸入: [0,1,0,3,12] 輸出: [1,3,12,0,0] 說明:
必須在原數組上操作,不能拷貝額外的數組。儘量減少操作次數。
-
來源:力扣(LeetCode)
-
鏈接:https://leetcode-cn.com/problems/move-zeroes 著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
解題 : 雙指針
使用雙指針,左指針指向當前已經處理好的序列的尾部,右指針指向待處理序列的頭部。
右指針不斷向右移動,每次右指針指向非零數,則將左右指針對應的數交換,同時左指針右移。
注意到以下性質:
左指針左邊均爲非零數;
右指針左邊直到左指針處均爲零。
因此每次交換,都是將左指針的零與右指針的非零數交換,且非零數的相對順序並未改變。
func moveZeroes(nums []int) {
left, right, n := 0, 0, len(nums)
for right < n {
if nums[right] != 0 {
nums[left], nums[right] = nums[right], nums[left]
left++
}
right++
}
}
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/WYHplvZjoZQ1893nvGoCjA