python 接雨水

LeetCode题解-接雨水Python实现 LeetCode题解-接雨水Pythonyuyan语言实现,三种解法,想你所想 阅读详情

接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
在这里插入图片描述

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。
示例 2:

输入:height = [4,2,0,3,2,5]
输出:9

题解

在这里插入图片描述
在这里插入图片描述

python code

class Solution:
    def trap(self, height: List[int]) -> int:
        # 记录柱子的个数
        length = len(height)

        # 记录每个柱子左侧最大高度
        l_list = list()

        # 记录每根柱子右侧最大高度
        r_list = list()

        # 默认第一个柱子的 左侧最大高度为0
        l_height = 0

        # 默认最后一个柱子的 右侧最大高度为0
        r_height = 0

        # 计算每根柱子左侧的最大高度
        for val in height:
            if not l_list:
                l_list.append(l_height)
                l_height = val
            else:
                l_list.append(l_height)
                if val > l_height:
                    l_height = val

        # 计算每根柱子右侧的最大高度
        for i in range(length-1, -1, -1):
            if not r_list:
                r_list.append(r_height)
                r_height = height[i]
            else:
                r_list.append(r_height)
                if height[i] > r_height:
                    r_height = height[i]
        r_list = r_list[::-1]

        result = 0
        # 循环遍历
        for k, v in enumerate(height):
            # 取左边最大高度 和 右边最大高度的最小值 减去 当前元素的值
            # 如果小于0  则赋值为0 如果大于0 则为当前柱子的存水量
            num = min(r_list[k], l_list[k]) - v
            val = num if num > 0 else 0
            result += val

        return result 
Python实现接雨水问题 It’s a problem you are likely to be asked when you have interview from ByteDance. 描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分... 阅读详情

相关推荐

【算法】经典算法题:接雨水 I & II(Python实现)

一、接雨水 I leetcode.42 链接:https://leetcode.cn/problems/trapping-rain-water/ 难度:hard 这里介绍了两种方法:动态规划(时间和空间复杂度都为O(n)),双指针(时间复杂度O(n),空间复杂度O(1))。 1、动态规划 时间复杂度:O(n) 空间复杂度:O(n) (1)算法原理 首先,维护两个数组: leftMax:第i个元素表示第i个柱子及左边位置中,height的最大高度。 righ...

BlueBlue 2187

接雨水 四种解法(Python)

单调栈 时间复杂度O(N) class Solution: def trap(self, height: List[int]) -> int: indexStack = [] sum = 0 for i in range(len(height)): while indexStack and height[i] > height[indexStack[-1]]: bottom = in

You can either travel or read,but either your body or soul must be on the way. 1637

Python实现3D接雨水

鱼弦:优快云内容合伙人、优快云新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)例如,在城市设计中,可以利用该算法评估建筑物和道路的排水系统,确定最佳的雨水收集策略。该算法的原理是通过遍历边界上的点,并使用优先队列(堆)来选择最低的点进行扩展。该算法基于优先队列(堆)的思想,通过从边界点开始,不断选择最低的点并向内部扩展,计算接到的雨水量。

走向CTO的路上... 716

LeetCode刷题(python版)——Topic42接雨水

给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

weixin_54039182的博客 1577

LeetCode——–接雨水python

题目不重述了。 小菜一枚,思路还是比较欠缺,按照leetcode题解的精选,用python写了一下。加深理解吧。 按行接雨水: 思路:首先寻找数组的最大值,即最多一共有几行。然后分别求每一行的雨水量。 从第一行开始,第一种情况是遇到比第一行低的块,可以存到一方水;第二种情况是遇到和第一行一样高或者比第一行要高的块,重新开始计算雨水量。 直到最高行,雨水量计算完毕。思路比较清晰,可以看力扣官网题解精选有图。 python代码: class Solution: def trap(self, height: List[int]) -> int: heightest=max

【分布式系统学习】CAP原理详解

概述:互联网最重要任务莫过于海量数据处理,即大规模分布式系统,分布式是互联网的核心技术!!!如上所述,分布式系统是无法同时满足CAP三个特性的。1.Atomicity(原子性)一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。2.Consistency(一致性)在事务开始之前和事务结束以后,数据库的完整性没有被破坏。3.Isolation(隔离性)

大龄烤红薯的博客 5024

python-leetcode 7.接雨水

从动态规划方法中注意到只要left_max_arr[i]>right_max_arr[i],积水的高度将由right_max_arr决定,同理,如果right_max_arr[i]>left_max_arr[i],积水的高度将由left_max_arr决定。对于下标i,下雨后水能到达的最大高度等于下标i两边的最大高度的最小值,下标i处能接的雨水量等于下标i处的水能到达的最大高度减去height[i]。从height[0]到当前位置寻找最大值left_max=max[height[j],left_max)。

qq_51906990的博客 870

STM32+ST7789屏实战:手把手教你打造物理按键控制的3级菜单GUI(附完整代码)

本文详细介绍了如何使用STM32和ST7789屏构建物理按键控制的3级菜单GUI系统。从硬件架构设计、SPI驱动配置到菜单状态机实现,提供了完整的代码示例和优化技巧,帮助开发者快速掌握嵌入式GUI开发的核心技术。

iii12的专栏 236

python每日一题——7接雨水

python每日一题——7接雨水

WY_记录 819

手把手教你用Python+Playwright实现抖音/B站/视频号三平台自动上传(附完整配置流程)

本文详细介绍了如何使用Python和Playwright构建一个多平台视频自动化上传系统,涵盖抖音、B站和视频号三大平台。文章从环境搭建、身份验证持久化、平台特异性上传引擎设计到任务调度与错误处理,提供了完整的配置流程和实战代码,帮助开发者实现高效、稳定的批量上传功能。

weixin_29294975的博客 1150

Visual Studio 命令提示符工具区别与使用场景

Visual Studio会提供一系列命令提示符工具,这些工具应用在哪些场景呢?本文进行了相关介绍。

cicada15的博客 3493

Python算法题集_接雨水

题目42:接雨水:给定 n 个非负整数表示每个宽度为1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水;科学的尽头是玄学,优雅的尽头是数学;堆栈一出,谁与争锋

长孤秋落的札记 1962

别再翻手册了!用Materials Studio的Forcite模块,5步搞定复杂溶剂的溶解度参数计算

本文详细介绍了如何使用Materials Studio的Forcite模块,通过5个步骤快速计算复杂溶剂的溶解度参数。从分子建模、结构优化到分子动力学采样,再到最终的内聚能密度计算,该方法大幅提升了石油化工和高分子材料研发中的效率,避免了传统手册查阅和实验的繁琐过程。

weixin_28707739的博客 280

接雨水 python_接雨水

接雨水题目要求给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)思路分析思考才是最重要的这个题目非常好的诠释了一句话----“技术,只是实现目标的方式和手段”。很多人面对问题时,总是有一种较劲脑汁写算法的冲动,还有人...

weixin_39586825的博客 307

使用kali对局域网内的主机进行远程控制

输入命令:hydra -l administrator -P/usr/share/woerdlists/rockyou.txt 192.168.100.241 smb -V。账户(adminitrator)密码:123456 【一般账户都是我们知晓了,如果不知道账户进行破解那几乎不太可能,密码如果设置的特别复杂无规律也是特别难破解的】【-r:扫描整个网段 后面就是设置 192.168.241.100/24的网络地址段 为 192.168.241.0/24 0和/24之间不要空格】

2301_77599769的博客 2279

【论文学习】《Fully-Convolutional Siamese Networks for Object Tracking》2016年SiamFC 全卷积孪生网络用于目标跟踪

在这项工作中,我们脱离了跟踪中采用的传统在线学习方法,并展示了一种专注于在离线阶段学习强嵌入的替代方法。与在分类设置中的使用不同,我们证明,对于跟踪应用,孪生全卷积深度网络能够更有效地使用可用数据。这不仅反映在测试时,通过执行有效的空间搜索,也反映在训练时,其中每个子窗口都有效地代表一个有用的样本,而几乎没有额外的成本。实验表明,深度嵌入为在线跟踪器提供了自然丰富的特征来源,并使简单的测试时策略表现良好。我们相信这种方法是对更复杂的在线跟踪方法的补充,并期望未来的工作能够更彻底地探索这种关系。

SkyLeopard的博客 2419

42.接雨水 python

目标是根据给定的高度图计算能够存储的雨水量。解决这个问题的方法有多种,其中最有效的是使用双指针法(Two-Pointer Approach),它可以在线性时间复杂度 O(n) 和常数空间复杂度 O(1) 内完成任务。解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输入:height = [4,2,0,3,2,5]

sysu63的博客 1221

基于深度学习的AI生成式人脸图像鉴别

AIGC(AI内容生成)技术的快速发展确实为创作者提供了高效生产力工具,但同时也引发了一些问题和挑战。这些技术可以生成以假乱真的图像、视频换脸等,给不法分子提供了滥用的机会。其中,一些不法分子可能利用AIGC技术制造虚假新闻、违反版权、绕过活体身份验证、散布谣言和诽谤他人、进行敲诈勒索等非法活动,以谋取不当利益。这些行为给社会造成了严重的负面影响,破坏了信息的真实性和可信度。因此,我们需要认识到AIGC技术的潜在风险,并采取相应的措施来应对。

mingo_敏 4496

Python 接雨水 双指针算法

left=ibreakbreakelse:breakbreakelse:break= left+1:breakelse:

2301_81335574的博客 553

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode 42. 接雨水 Python实现5种算法

42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。 示例: 输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 动态规划(开始想到的)(O(n^2)) class Solution: def trap(self, height: List[i

buglesxu的博客 1413

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Python面试宝典第22题:接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。暴力法通过遍历每个柱子,分别计算其左右两边的最大高度,从而确定当前位置能储存的雨水量。这种方法简单直接,但效率低下,时间复杂度为O(n^2),不适用于大规模数据。动态规划法利用两个数组分别记录从左到右和从右到左扫描过程中的最大高度,然后遍历每个柱子,计算雨水量。这种方法相比暴力法显著提高了效率,时间复杂度为O(n),空间复杂度也为O(n)。

hope_wisdom的技术博客 1427

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Python描述 LeetCode 42. 接雨水

给定 个非负整数表示每个宽度为 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1: 示例 2: 提示:分别找出从左到右的最大值,和从右到左的最大值。那么对于每一个height来说,它可以存储的雨水就是,一次遍历就好...

一起加油 367

【Python】接雨水问题

【python】接雨水问题: 给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水? # 接雨水:给定n个非负整数表示每个宽度为1的柱子的高度图, # 计算按此排列的柱子下雨之后能接多少雨水 water = 0 m,n = 0,0 p = 0 q = 1 location = [] # 定义一个空列表,表示某元素的索引 str1=input("请输入英文,间隔的柱子数组[···, ···, ····]:\n") li

piosonlee的博客 501

3D接雨水,python实现总结

3D接雨水python实现

m0_75030087的博客 376

leetcode python3 接雨水

给定n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。感谢 Marcos 贡献此图。 示例: 输入: [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 接雨水这道题目在面试中出现的很多,...

qq_39579440的博客 393

接雨水 Python 双指针 算法

利用双指针算法 计算

2301_81335574的博客 632
上一篇: python 每日温度
下一篇: 解决递归中的重复计算问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋的BLOG

创作不易 请多多关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值