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

โปรแกรมค้นหาระยะห่างสูงสุดระหว่างที่นั่งว่างและที่นั่งว่างใน Python


สมมติว่าเรามีรายการที่นั่งที่มีเลข 0 และ 1 เท่านั้น โดยที่ seat[i] หมายถึงที่นั่ง เมื่อเป็น 1 ก็จะถูกครอบครอง มิฉะนั้น จะว่าง มีที่นั่งว่างอย่างน้อยหนึ่งที่นั่งและที่นั่งว่างอย่างน้อยหนึ่งที่นั่ง เราต้องหาระยะทางสูงสุดจากที่นั่งว่างไปยังที่นั่งว่างที่ใกล้ที่สุด

ดังนั้น หากอินพุตเหมือนกับที่นั่ง =[1, 0, 1, 0, 0, 0, 1] เอาต์พุตจะเป็น 2 เนื่องจากเราสามารถครอบครองที่นั่งได้[4] ระยะห่างคือ 2

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

  • res :=0

  • สุดท้าย :=-1

  • n :=ขนาดที่นั่ง

  • สำหรับฉันอยู่ในช่วง 0 ถึง n - 1 ทำ

    • ถ้าที่นั่ง[i] คือ 1 แล้ว

      • res :=สูงสุดของ res และ (i ถ้าสุดท้าย <0 มิฉะนั้น ชั้นของ (i-last)/2)

      • สุดท้าย :=ฉัน

  • คืนค่าสูงสุดของ res และ (n-last-1)

ตัวอย่าง

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

def solve(seats):
   res, last, n = 0, -1, len(seats)
   for i in range(n):
      if seats[i]:
         res = max(res, i if last < 0 else (i - last) // 2)
         last = i
   return max(res, n - last - 1)

seats = [1, 0, 1, 0, 0, 0, 1]
print(solve(seats))

อินพุต

[1, 0, 1, 0, 0, 0, 1]

ผลลัพธ์

2