复制 Python 中的零


假设我们有一个定长的整数数组,我们需要复制每个出现的零,同时将剩余元素移至右侧。

请注意,原始数组长度之外的元素不会被写入。

所以,如果该数组为 [1,0,2,3,0,4,5,0],那么修改之后它将为 [1,0,0,2,3,0,0,4]

为了解决这个问题,我们将按照以下步骤操作 −

  • 将数组复制到另一个数组 arr2,设置 i 和 j 为 0
  • 当 i < arr 的大小时 −
    • 如果 arr2[i] 为零,那么
      • arr[i] := 0
      • 将 i 加 1
      • 如果 i < arr 的大小时,那么 arr[i] := 0
    • 否则,arr[i] := arr2[j]
    • 将 i 和 j 加 1

示例

让我们看看以下实现,以便更好地理解 −

 Live Demo

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]

更新时间:29-Apr-2020

965 次浏览

开启您的职业生涯

完成课程获得认证

开始
广告