LeetCode 42. 接雨水 - PHP

news/2024/9/24 3:27:30/

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

 左右两边是漏的,就是第一个柱子和最后一个柱子不接雨水。

暴力递归

class Solution {/*** @param Integer[] $height* @return Integer*/function trap($height) {$n = count($height);$ans = 0;for ($i = 1; $i < $n - 1; $i++) {$l_max = 0;$r_max = 0;// 找右边最高的柱子for ($j = $i; $j < $n; $j++)$r_max = max($r_max, $height[$j]);// 找左边最高的柱子for ($j = $i; $j >= 0; $j--)$l_max = max($l_max, $height[$j]);// 如果自己就是最高的话,// l_max == r_max == height[i]$ans += min($l_max, $r_max) - $height[$i];}return $ans;}
}

直接爆内存。

双指针

class Solution {/*** @param Integer[] $height* @return Integer*/function trap($height){$n = count($height);if (!$n) return 0;$l = 0;$l_max = $height[$l];$r = $n - 1;$r_max = $height[$r];$ans = 0;while ($l < $r) {if ($height[$l] < $height[$r]) {if ($height[$l] < $l_max) $ans += $l_max - $height[$l];else $l_max = $height[$l];$l++;} else {if ($height[$r] < $r_max) $ans += $r_max-$height[$r];else $r_max = $height[$r];$r--;}}return $ans;}
}

拿left指针做实例

如果大于if ($height[$l] < $l_max)

最终数量会加上当前最大的减掉$l指针指着的,$ans += $l_max - $height[$l];


http://www.ppmy.cn/news/1433829.html

相关文章

Linux sudo suid提权练习

题目比较简单&#xff0c;可以利用sudo和多种suid程序提权&#xff0c;做个记录 进入靶场题目环境 获得节点信息 远程连接上 执行命令id&#xff0c;发现只是admin普通账户 sudo提权 发现存在 /usr/bin/vim, /usr/bin/bash, /usr/bin/more, /usr/bin/less, /usr/bin/nano, /…

C语言前期算法整理

1. 分别获得一个四位数的个、十、百、千位上的数字 #include <stdio.h>int main(void) {int num 1234;int ge 0;int shi 0;int bai 0;int qian 0;ge num % 10;shi num / 10 % 10;bai num / 100 % 10;qian num / 1000;printf("ge %d\n", ge);printf(…

hyperf 三十一 极简DB组件

一 安装及配置 composer require hyperf/db php bin/hyperf.php vendor:publish hyperf/db 默认配置 config/autoload/db.php 如下&#xff0c;数据库支持多库配置&#xff0c;默认为 default。 配置项类型默认值备注driverstring无数据库引擎 支持 pdo 和 mysqlhoststringl…

C++ | Leetcode C++题解之第46题全排列

题目&#xff1a; 题解&#xff1a; class Solution { public:void backtrack(vector<vector<int>>& res, vector<int>& output, int first, int len){// 所有数都填完了if (first len) {res.emplace_back(output);return;}for (int i first; i &…

参数传递 的案例

文章目录 12 1 输出一个int类型的数组&#xff0c;要求为&#xff1a; [11,22,33,44,55] package com.zhang.parameter; //有关方法的案例 public class MethodTest3 {public static void main(String[] args) {//输出一个int类型的数组&#xff0c;要求为&#xff1a; [11,…

Leetcode 118 杨辉三角

目录 一、问题描述二、示例及约束三、代码方法一&#xff1a;数学 四、总结 一、问题描述 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。   在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 二、示例及约束 示例 1&#xff1a…

大数据学习的第三天

文章目录 学习大数据命令的方式查看文件拷贝文件的方式添加数据的方式 出现了问题移动文件 hadoop工作流程和工作机制的方式namenodedatanodesecondarynamenode(主节点) 学习大数据命令的方式 查看文件 hadoop fs -cat /test/2.txt下载文件 hadoop fs -get -f /test/2.txt-f …

class094 贪心经典题目专题6【左程云算法】

class094 贪心经典题目专题6【左程云算法】 前言版权推荐class094 贪心经典题目专题6最后 前言 2024-4-23 14:01:48 以下内容源自《【左程云算法】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://…