題目要求:
給定一個(gè)數(shù)組 nums,編寫(xiě)一個(gè)函數(shù)將所有 0 移動(dòng)到數(shù)組的末尾,同時(shí)保持非零元素的相對(duì)順序。
請(qǐng)注意 ,必須在不復(fù)制數(shù)組的情況下原地對(duì)數(shù)組進(jìn)行操作。
示例 1:
輸入: nums = [0,1,0,3,12]
輸出: [1,3,12,0,0]
示例 2:
輸入: nums = [0]
輸出: [0]
鏈接:https://leetcode.cn/problems/move-zeroes/
解題思路
分兩步
1.第一步將所有不為0的元素前移,并記錄最終索引值
2.第二步將索引值之后的所有元素填充為0
代碼:
func moveZeroes(nums []int) {
// 找到所有不是0的元素,按照順序排列到列表的前列,并記住索引
if nums == nil || len(nums) == 0{
return
}
index := 0
for i:=0; i< len(nums); i++{
if nums[i] != 0{
nums[index] = nums[i]
index++
}
}
// 索引之后的所有數(shù)據(jù)全部補(bǔ)0
for i:=index; i<len(nums); i++{
nums[i] = 0
}
}