降水量(python)
生活随笔
收集整理的这篇文章主要介绍了
降水量(python)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目描述
给定n个柱面的高度,表示降雨某地n块区域的海拔高度。 计算降雨之后该地最大储水面积。如果低于地平线,也就是小于0,则一定积水
输入描述:
第一行输入整数n.(1<=n<=10000) 第二行输入n个高度整数h。(-10000<=h<=10000)
输出描述:
输出答案。
示例
输入
12
0 1 0 2 1 0 1 3 2 1 2 1
输出
6
代码
class Solution:def __init__(self) -> None:passdef solution(self, n, arr):result = 0low_water = 0max_water = 0# TODO: 请在此编写代码i = 0for x in range(0, len(arr)-1):if arr[x] > arr[x+1]:i = x # print(i)breakhigh_water = arr[i]high_i = i # print(i)while(i < len(arr)-1): # print(str(i)+"|||||||"+str(len(arr)))i = i+1 # print(str(high_i)+"=="+str(high_water)+"=="+str(arr[i]))if i < len(arr)-2:if high_water <= arr[i] and arr[i] > arr[i+1]:low_water = arr[i]j_ori = high_i + 1if high_water == 0 and i>0:max_water = low_waterj_ori = high_ielif high_water > low_water:max_water = low_waterelse:max_water = high_water # print(str(max_water)+"++"+str(low_water))for j in range(j_ori, i):result = result + (max_water - arr[j])high_i = ihigh_water = arr[i]elif i == len(arr)-1:i = high_ihigh_i = high_i+1high_water = arr[high_i]else:if high_water <= arr[i]:low_water = arr[i]j_ori = high_i + 1if high_water == 0 and i>0:max_water = low_waterj_ori = high_ielif high_water > low_water:max_water = low_waterelse:max_water = high_water # print(str(max_water)+"++"+str(low_water)+"++high_i:"+str(high_i))for j in range(j_ori, i): # print("222:"+str(result))result = result + (max_water - arr[j]) # print("222:"+str(result))high_i = ihigh_water = arr[i]elif i == len(arr)-1:high_i = high_i+1high_water = arr[high_i]i = high_i-1if high_i == len(arr)-2:break# TODO: 请在此编写代码return resultif __name__ == "__main__":n = int(input().strip())arr = [int(item) for item in input().strip().split()]sol = Solution()result = sol.solution(n, arr)print(result)通过率40%
总结
以上是生活随笔为你收集整理的降水量(python)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: android开发蓝牙传输图片,如何发送
- 下一篇: python做流程管理平台_[译] Ai