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

แทนที่ตำแหน่งศูนย์ไปยังจุดสิ้นสุดของรายการใน Python


สมมติว่าเรามีรายการตัวเลข เราต้องใส่เลขศูนย์ทั้งหมดไว้ที่ท้ายรายการโดยปรับปรุงรายการให้เข้าที่ และไม่ควรเปลี่ยนการเรียงลำดับแบบสัมพันธ์ขององค์ประกอบอื่น ๆ เราต้องพยายามแก้ปัญหานี้ใน O(1) พื้นที่เพิ่มเติม

ดังนั้น หากอินพุตเป็น [2,0,1,4,0,5,6,4,0,1,7] ผลลัพธ์จะเป็น [2, 1, 4, 5, 6, 4, 1 , 7, 0, 0, 0]

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

  • ถ้าขนาด L เท่ากับ 0 แล้ว
    • คืนรายการว่าง
  • k :=0
  • สำหรับ i ในช่วง 0 ถึงขนาด L ให้ทำ
    • ถ้า L[i] ไม่เหมือนกับ 0 แล้ว
      • L[k] :=L[i]
      • k :=k + 1
  • สำหรับ j ในช่วง k ถึงขนาด L ให้ทำ
    • L[j] :=0
  • คืนแอล

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, L):
      if len(L) == 0:
         return []
         k = 0
         for i in range(len(L)):
            if L[i] != 0:
               L[k] = L[i]
               k+=1
         for j in range(k,len(L)):
            L[j] = 0
         return L
ob = Solution()
L = [2,0,1,4,0,5,6,4,0,1,7]
print(ob.solve(L))

อินพุต

[2,0,1,4,0,5,6,4,0,1,7]

ผลลัพธ์

[2, 1, 4, 5, 6, 4, 1, 7, 0, 0, 0]