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

โปรแกรมค้นหาอาคารที่มีมุมมองที่ดีขึ้นใน Python


สมมติว่าเราได้รับอาร์เรย์ที่มีความสูงของอาคารต่างๆ อาคารต่างๆ ตั้งอยู่บนแนวเส้น และอาคารจะมองเห็นได้ดีกว่าถ้าไม่มีอาคารสูงกว่าอื่นมาบดบัง ดังนั้นหากมีอาร์เรย์ที่มีความสูง เราต้องหาอาคารที่ไม่มีอาคารสูงอื่น ๆ เพื่อบดบังทัศนียภาพจากพวกเขา ดัชนีจะถูกส่งคืนจากอาร์เรย์ที่ตรงตามเกณฑ์

ดังนั้น หากอินพุตเท่ากับความสูง =[5, 6, 8, 7] ผลลัพธ์จะเป็น [2, 3] อาคารในแถวดัชนี 0 และ 1 ถูกปิดกั้นโดยอาคารที่ดัชนี 2 อาคารที่ดัชนี 2 และ 3 ไม่ถูกปิดกั้นเนื่องจากอาคารสูงกว่าที่ตำแหน่ง 2 ตั้งอยู่ด้านหลังอาคารที่สั้นกว่าที่ตำแหน่ง 3

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

  • res :=รายการใหม่
  • ชั่วโมง :=0
  • สำหรับ i ในช่วง (ขนาดของความสูง - 1) ถึง -1, ลดลง 1, ทำ
    • ถ้า heights[i]> h แล้ว
      • ใส่ i ต่อท้าย res
      • ชั่วโมง :=ความสูง[i]
  • ส่งคืนรายการย้อนกลับ

ตัวอย่าง

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

def solve(heights):
   res, h = [], 0
   for i in range(len(heights) - 1, -1, -1):
      if heights[i] > h:
         res.append(i)
         h = heights[i]
   return res[::-1]

print(solve([5, 6, 8, 7]))

อินพุต

[5, 6, 8, 7]

ผลลัพธ์

[2, 3]