Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm ra những tòa nhà có tầm nhìn đẹp hơn bằng Python

Giả sử, chúng ta được cung cấp một mảng chứa các chiều cao của các tòa nhà khác nhau. Các tòa nhà nằm trên một đường thẳng và một tòa nhà có tầm nhìn tốt hơn nếu nó không bị một tòa nhà khác cao hơn cản trở. Vì vậy, với mảng có chứa chiều cao, chúng ta phải tìm ra các tòa nhà không có các tòa nhà cao hơn khác để che khuất tầm nhìn từ chúng. Các chỉ số được trả về từ mảng đáp ứng các tiêu chí.

Vì vậy, nếu đầu vào là height =[5, 6, 8, 7], thì đầu ra sẽ là [2, 3]. Các tòa nhà trong mảng chỉ số 0 và 1 bị che bởi tòa nhà ở chỉ số 2. Tòa nhà ở chỉ số 2 và 3 không bị chặn vì tòa nhà cao hơn ở vị trí 2 nằm sau tòa nhà ngắn hơn ở vị trí 3.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • res:=một danh sách mới
  • h:=0
  • đối với tôi trong phạm vi (kích thước chiều cao - 1) đến -1, giảm đi 1, thực hiện
    • nếu chiều cao [i]> h, thì
      • chèn tôi vào cuối res
      • h:=heights [i]
  • trả về mặt sau của danh sách res

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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]))

Đầu vào

[5, 6, 8, 7]

Đầu ra

[2, 3]