用Python编写查找有更好视野的建筑物的程序

用Python编写查找有更好视野的建筑物的程序

假设我们提供了一个包含不同建筑物高度的数组。这些建筑物位于一条线上,如果它不被其他更高的建筑物遮挡,则它会有更好的视野。因此,根据包含高度的数组,我们必须找到没有其他更高的建筑物遮挡视线的建筑物。返回满足条件的数组索引。

因此,如果输入如下所示:height = [5, 6, 8, 7],则输出将是[2, 3]。索引0和1处的建筑物受到索引2处建筑物的遮挡。位于位置2的较高建筑物位于位置3的较矮建筑物后面,因此不会被遮挡。

要解决此问题,我们将遵循以下步骤:

  • res:新列表
  • h:0
  • for i in range(len(heights)-1) to -1,递减1,执行以下操作
    • 如果heights[i] > h,则
      • 在res的末尾插入i
      • h:heights[i]
  • 返回列表res的反转

示例

让我们查看以下实现以更好地理解。

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]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程