leetcode 1089 - Duplicate Zeros
leetcode 1089 - Duplicate Zeros
題目描述
給一個長度固定的list,將裡面出現的0做複製,並將剩餘的元素往右移
解題思路
使用單指針做遍歷,條件有兩個,都符合才做處理
- 假如當前元素為0
- 考慮最後一個元素也為0要小於list長度
Python
class Solution:
def duplicateZeros(self, arr: List[int]) -> None:
"""
Do not return anything, modify arr in-place instead.
"""
i = 0
while i < len(arr):
if arr[i] == 0 and i + 1 < len(arr):
arr.insert(i+1, 0)
arr.pop()
i += 1
i += 1
Golang
func duplicateZeros(arr []int) {
for i := 0; i < len(arr); i++ {
if arr[i] == 0 && i+1 < len(arr) {
arr = append(arr[:i+1], arr[i:len(arr)-1]...)
i ++
}
}
}