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

โปรแกรมหาอาคารที่มองเห็นได้ (ไม่ถูกบัง) ใน Python

ได้รับอาร์เรย์ heights ความสูงอาคาร ต้องหาดัชนีของอาคารที่ไม่ถูกบังโดยอาคารสูงกว่าด้านขวา (มองจากขวาไปซ้าย)

ตัวอย่าง: heights = [5,6,8,7] ผลลัพธ์ [2,3] (อาคารดัชนี 2,3 ไม่ถูกบัง)

วิธีแก้ปัญหา

  1. res := [], h := 0
  2. วน i จากขวาไปซ้าย:
    • ถ้า heights[i] > h: res.append(i), h = heights[i]
  3. คืน res[::-1]

ตัวอย่างโค้ด

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]