Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ศูนย์ที่ซ้ำกันใน Python


สมมติว่าเรามีอาร์เรย์ความยาวคงที่ของจำนวนเต็ม เราต้องทำซ้ำการเกิดขึ้นของศูนย์แต่ละครั้ง โดยเลื่อนองค์ประกอบที่เหลือไปทางด้านขวา

โปรดทราบว่าองค์ประกอบที่เกินความยาวของอาร์เรย์ดั้งเดิมจะไม่ถูกเขียน

สมมติว่าอาร์เรย์เป็นเหมือน [1,0,2,3,0,4,5,0] หลังจากแก้ไขแล้ว จะเป็น [1,0,0,2,3,0,0,4]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • คัดลอก arr ไปยังอาร์เรย์อื่น arr2 ตั้งค่า i และ j เป็น 0
  • ในขณะที่ฉัน <ขนาดของ arr −
    • ถ้า arr2[i] เป็นศูนย์ แล้ว
      • arr[i] :=0
      • เพิ่ม i ขึ้น 1
      • ถ้าฉัน <ขนาดของ arr แล้ว arr[i] :=0
    • 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]