【Leetcode刷题篇】leetcode42 接雨水
发布日期:2021-06-29 15:35:27
浏览次数:2
分类:技术文章
本文共 1133 字,大约阅读时间需要 3 分钟。
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
示例 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
解题思路:从单个i入手,对于位置i能装下多少水呢?
可以分析得到位置i能装两格水。 为什么位置i最多能盛2格水呢?因为,位置i能达到的水柱高度和其左边的最高柱子、右边的最高柱子有关,我们称之为这两个柱子高度为l_max
和r_max
;位置i的最大水柱高度就是min(l_max,r_max)
.其能够盛水最多为min(l_max,r_max)-height[i]
。
解题思路,对其遍历的过程中,同时找其左最大和右最大。
public int trap(int[] height) { // 暴力破解法 int res = 0; // 对其遍历 第一个和最后一个都没法盛水 for(int i=1;i=0;j--) { left_max = Math.max(height[i], left_max); } // 开始找right的max for(int j=i;j
解题思路2:先申请两数组,记录好对应i的最大和最小值。
public int trap_2(int[] height) { // 记录结果 int res = 0; // 先计算最大和最小值 int[] left_max = new int[height.length]; int[] right_max = new int[height.length]; // 考虑边界的两个i值对其赋初值 left_max[0] = height[0]; right_max[height.length-1] = height[height.length-1]; // 计算 for(int i=1;i=0;i++) { right_max[i] = Math.max(height[i], right_max[i+1]); } // 对能盛水的i遍历 for(int i=1;i
转载地址:https://codingchaozhang.blog.csdn.net/article/details/111461903 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月08日 00时33分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
BCOP章鱼船长,6月22日晚上8点上线薄饼
2019-04-29
为战疫助力,半导体功不可没
2019-04-29
了解这些操作,Python中99%的文件操作都将变得游刃有余!
2019-04-29
知道如何操作还不够!深入了解4大热门机器学习算法
2019-04-29
只有经历过,才能深刻理解的9个编程道理
2019-04-29
发现超能力:这些数据科学技能助你更高效专业
2019-04-29
AI当道,人工智能将如何改变金融业?
2019-04-29
消除性别成见,技术领域需要更多“乘风破浪的姐姐”
2019-04-29
7行代码击败整个金融业,这对20多岁的爱尔兰兄弟是如何做到的?
2019-04-29
2020十大编程博客:私藏的宝藏编程语言博客大放送!
2019-04-29
编程中的角色选择:哪类工作角色最适合你?
2019-04-29
10种算法一文打尽!基本图表算法的视觉化阐释
2019-04-29
未来属于人工智能工程师,但成功转型不容易
2019-04-29
科技界“挠头”:困扰科技界可持续发展的难题
2019-04-29
20年后,这5种编码语言可能就消失了……
2019-04-29
标准出现问题,人工智能正在走向错误的方向
2019-04-29
如何使用Python实现最低有效位隐写术?
2019-04-29
湮没在赞誉之中,科学史上鲜为人知的五大“败笔”
2019-04-29
别再对分类变量进行独热编码!你还有更好的选择
2019-04-29
如果不能用Python执行机器学习,那该用什么呢?
2019-04-29