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

โปรแกรมหาขนาดของรายการย่อยที่ยาวที่สุดโดยที่ความเร็วรถคงที่ใน python


สมมติว่าเรามีรายการตัวเลขที่แสดงตำแหน่งของรถในช่วงเวลาที่เว้นระยะเท่ากัน เราต้องหาขนาดของรายการย่อยที่ยาวที่สุดที่รถแล่นด้วยความเร็วคงที่

ดังนั้น หากอินพุตเท่ากับตำแหน่ง =[0, 4, 8, 12, 6, 4, 0] ผลลัพธ์จะเป็น 4 เนื่องจากรายการย่อยคือ [0, 4, 8, 12]

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

  • j :=1
  • max_cnt :=0, ปัจจุบัน :=0
  • ระยะทาง :=|ตำแหน่ง[0] - ตำแหน่ง[1]|
  • ในขณะที่ j <ขนาดของตำแหน่ง ทำ
    • ก่อนหน้า :=ตำแหน่ง[j - 1]
    • ถ้าระยะทางเท่ากับ |positions[j] - ก่อนหน้า| แล้ว
      • ปัจจุบัน :=ปัจจุบัน + 1
    • มิฉะนั้น
      • max_cnt :=สูงสุดของ max_cnt และกระแส
      • ปัจจุบัน :=1
      • ระยะทาง :=|positions[j] - ก่อนหน้า|
    • max_cnt :=สูงสุดของ max_cnt และกระแส
    • j :=j + 1
  • ส่งคืน max_cnt + 1

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

ตัวอย่าง

class Solution:
   def solve(self, positions):
      j = 1
      max_cnt = 0
      current = 0
      distance = abs(positions[0] - positions[1])
      while j < len(positions):
         prev = positions[j - 1]
         if distance == abs(positions[j] - prev):
            current += 1

         else:
            max_cnt = max(max_cnt, current)
            current = 1
            distance = abs(positions[j] - prev)
         max_cnt = max(max_cnt, current)
         j += 1
      return max_cnt + 1
ob = Solution()
positions = [0, 4, 8, 12, 6, 4, 0]
print(ob.solve(positions))

อินพุต

[0, 4, 8, 12, 6, 4, 0]

ผลลัพธ์

4