ได้รับอาร์เรย์ heights ความสูงอาคาร ต้องหาดัชนีของอาคารที่ไม่ถูกบังโดยอาคารสูงกว่าด้านขวา (มองจากขวาไปซ้าย)
ตัวอย่าง: heights = [5,6,8,7] ผลลัพธ์ [2,3] (อาคารดัชนี 2,3 ไม่ถูกบัง)
วิธีแก้ปัญหา
res := [], h := 0- วน
iจากขวาไปซ้าย:- ถ้า
heights[i] > h:res.append(i), h = heights[i]
- ถ้า
- คืน
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]