相关疑难解决方法(0)

给定建筑物高度的水累积算法

我正在练习算法,我已经坚持了几天这个问题.当我测试我的解决方案时,我仍然是错误的.这是问题陈述:

纽约华尔街以其令人叹为观止的摩天大楼而闻名.但是下雨的季节即将到来,今年将落在建筑物上的水量将会很大.由于每栋建筑物都被固定在左侧和右侧的建筑物上(除了第一个和最后一个),只有当建筑物的高度高于建筑物的高度时,水才会从建筑物中泄漏出来.向左或向右(华尔街边缘的高度为0).所有建筑物的宽度均为1米.从左到右给出华尔街建筑物的高度(以米为单位),您的任务是打印到华尔街建筑物上的总水量(立方米)标准输出(标准输出) .

输入示例:

heights: [9 8 7 8 9 5 6]
Run Code Online (Sandbox Code Playgroud)

示例输出:

5
Run Code Online (Sandbox Code Playgroud)

说明: 在这个例子中,在第一个和第五个建筑物之间有4立方米的水(第二个是1个,第三个是2个,第四个是1个),第五个和第七个建筑之间有1个立方米水(在第六栋楼).

我解决这个问题的方法是找到全局最大值,并使用这些最大值的差异来计算积水量.我考虑到最后使用local_water变量可能遗漏的水.任何人都可以帮我找到算法或代码中的错误吗?

注意:我正在寻找一种只能通过每个元素一次的解决方案

这是我输入错误的输入:

heights: [8,8,4,5]
Run Code Online (Sandbox Code Playgroud)

这个输入应该产生1,而不是我的答案0.

这是我的代码:

def skyscrapers(heights):
    heights.insert(0,0)
    heights.append(0)
    local_max = 0
    global_max = 0
    total_water = 0
    local_water = 0
    end_water = []
        # end_water records water heights to be used for finding 
                # water between the final global maximum and 
                # subsequent local maximums. These potential values are
                # stored in local_water.
    for i in range(1, …
Run Code Online (Sandbox Code Playgroud)

python algorithm

7
推荐指数
2
解决办法
2493
查看次数

标签 统计

algorithm ×1

python ×1