Computer >> Máy Tính >  >> Lập trình >> Python

Nhân bản Zeros trong Python

Giả sử chúng ta có một mảng số nguyên có độ dài cố định, chúng ta phải nhân đôi mỗi lần xuất hiện của số 0, dịch chuyển các phần tử còn lại sang phía bên phải.

Lưu ý rằng các phần tử vượt quá độ dài của mảng ban đầu sẽ không được viết.

Vì vậy, giả sử mảng giống như [1,0,2,3,0,4,5,0], thì sau khi sửa đổi nó sẽ là [1,0,0,2,3,0,0,4]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • sao chép arr vào một mảng arr2 khác, đặt i và j là 0
  • while i
  • nếu arr2 [i] bằng 0, thì
    • arr [i]:=0
    • tăng tôi lên 1
    • if i
  • else arr [i]:=arr2 [j]
  • tăng i và j lên 1

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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]))

Đầu vào

[1,0,2,3,0,4,5,0]

Đầu ra

[1,0,0,2,3,0,0,4]