假设我们有一个固定长度的整数数组,我们必须复制每次出现的零,将其余元素移到右侧。
请注意,不会写入超出原始数组长度的元素。
因此,假设数组类似于[1,0,2,3,0,4,5,0],则在修改后它将为[1,0,0,2,3,0,0,4]
为了解决这个问题,我们将遵循以下步骤-
将arr复制到另一个数组arr2中,将i和j设置为0
当我<arr的大小-
arr [i]:= 0
使我增加1
如果i <arr的大小,则arr [i]:= 0
如果arr2 [i]为零,则
else arr [i]:= arr2 [j]
将i和j加1
让我们看下面的实现以更好地理解-
class Solution(object): def duplicateZeros(self, arr): arr2 = [i for i in arr] i=0 j = 0 while i < len(arr): if not arr2[j]: arr[i] = 0 i+=1 if i<len(arr): arr[i] = 0 else: arr[i] = arr2[j] j+=1 i+=1 return arr ob1 = Solution() print(ob1.duplicateZeros([1,0,2,3,0,4,5,0]))
[1,0,2,3,0,4,5,0]
输出结果
[1,0,0,2,3,0,0,4]