leecode42 DP

自己的暴力想法,把图形看成一个个碗,一段一段地算,错误示例

class Solution {
public:int trap(vector<int>& height) {int s = height.size();int sum = 0,kk=1;int flag = 0;int p1 = -1, p2 = -1;for (int i = 1; i < s; i++) {cout<<p1<<endl;if (p1 >= 0 && flag) {if (height[i] >=height[p1]) // 找到了高于最左边的值,短板效应,后面即便更大该曲线的水也不变{for (int j = p1 + 1; j < i; j++) {sum += height[p1] - height[j];}p1 = -1;flag = 0;kk=1;} else if (height[i] < height[i - 1]) // 该段最高点到了{for (int j = p1 + 1; j < i - 1; j++) {sum += height[i - 1] - height[j];}p1 = -1;flag = 0;kk=1;} else if (i == s - 1) //{for (int j = p1 + 1; j < i; j++) {sum += height[i] - height[j];}}if (p1 >= 0 && height[i] <= height[i - 1]) {p2 = i;} else if (p1 >= 0 && height[i] > height[i - 1]) {flag = 1;}if (height[i] < height[i - 1]&&kk) {p1 = i - 1;kk=0;}}return sum;}
};

主要问题在于,不好判断一段盛水区间什么时候结束,蠢麻了,然后想到DP,前面错误想法的前提上肯定想不明白的

题解思路是这样的,每一列盛水是由该列左右两侧最大值的较小值决定的,较小值减去该列值即为该列盛水量,所以建两个数组,分别存左右最大,然后计算即可

class Solution {
public:int trap(vector<int>& height) {int s=height.size();int sum=0;int o=height[0],p=height[s-1];vector<int>kk;for(int i=0;i<s;i++){o=max(o,height[i]);kk.push_back(o);}for(int i=s-1;i>=0;i--){p=max(p,height[i]);kk[i]=min(kk[i],p);sum+=kk[i]-height[i];}return sum;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全技术与应用:远程控制与数据库安全

实验准备 软件&#xff1a;VMware Workstation Pro 虚拟机&#xff1a;Red Hat Enterprise Linux 7 服务器&#xff0c;Red Hat Enterprise Linux 7 客户端 网络模式&#xff1a;NAT模式 1、配置服务器及客户端网络 服务器IP 客户端IP 测试相互通信 在客户机上设置镜像&#…

【C++刷题】优选算法——递归第二辑

全排列 vector<vector<int>> vv; void dfs(vector<int>& nums, vector<int>& v, vector<bool>& check) {if(v.size() nums.size()){vv.push_back(v);return;}for(int i 0; i < nums.size(); i){if(check[i] false){v.push_ba…

pillow学习5

ImageEnhance 模块 内置的 ImageEnhance 模块中包含了多个用于增强图像效果的函数&#xff0c;主要用来调整图像 的色彩、对比度、亮度和清晰度等&#xff0c;感觉上和调整电视机的显示参数一样。 在模块 ImageEnhance 中&#xff0c;所有的图片增强对象都实现一个通用的接口。…

nginx的配置以及常见命令

Nginx配置与常用命令指南 Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP服务器。由于它的稳定性、丰富的功能集、简单的配置文件和低资源消耗&#xff0c;Nginx在全球范围内被广泛使用。在本文中&#xff0c;我们将介绍Nginx的基本配置和一些常…

车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文

系列文章目录 车载网络测试实操源码_使用CAPL脚本解析hex、S19、vbf文件 车载网络测试实操源码_使用CAPL脚本对CAN报文的Counter和CRC进行实时监控 车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文 车载网络测试实操源码_使用CAPL脚本实现安全…

利用神经网络学习语言(四)——深度循环神经网络

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下&#xff1a;regression2chatgpt/ch10_rnn/char_rnn_batch.ipynb 《循环神经网络&#xff08;RNN&…

【移花接木】OpenCV4.8 For Java 深度学习 实时人脸检测

学习《OpenCV应用开发&#xff1a;入门、进阶与工程化实践》一书&#xff0c;学会本文所有技能就这么简单&#xff01; 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; 前言 我写这篇文章之前&#xff0c;我搜索整个网络文章跟问各种语言大模…

速卖通测评揭秘:如何选择安全的渠道操作

许多商家对测评存在误解&#xff0c;认为只需进行几次测评就能迅速打造爆款。实际上&#xff0c;测评是一个需要计划和持久性的过程&#xff0c;以便让平台检测到产品的受众程度并提高产品的曝光和权重。 在进行测评时&#xff0c;安全是首要考虑的问题。平台可以通过设备、网…

黑马点评1——短信篇(基于session)

&#x1f308;hello&#xff0c;你好鸭&#xff0c;我是Ethan&#xff0c;一名不断学习的码农&#xff0c;很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 &#x1f3c3;人生之义&#xff0c;在于追求&#xff0c;不在成败&#xff0c;勤通…

如何使用多种算法解决LeetCode第135题——分发糖果问题

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

WPF 的 style 定义 使用 继承 复用

style 样式 如何定义一个 style 样式 <Button Content"样式" Width"100" Height"50"><Button.Style><Style></Style></Button.Style></Button>拥有的属性 targetType “” 针对什么类型生效setter 设置属…

Ubuntu中 petalinux 安装 移植linux --tftp/tftp-hpa服务的方法

Xilinx 文档 PetaLinux 指南&#xff1a;如何创建 PetaLinux 环境 &#xff08;2019.1&#xff09; PetaLinux工具参考指南 PetaLinux安装详解(Xilinx , linux, zynq, zynqMP) petalinux 2020.1安装教程 一、PetaLinux工具和库安装 PetaLinux 工具要求主机系统 /bin/sh 为“b…

18.网络编程

网络编程 又称为Socket编程。 Java中网络编程主要是以Java语言完成信息数据在网络上的传输。 网络 计算机网络&#xff0c;指的是将不同地理位置的多台计算机连接起来&#xff0c;可以实现信息共享和信息传输。 Java是Internet上的语言&#xff0c;提供了对网络应用程序的…

笔记 | 《css权威指南》

网络安全色 URL text-indent line-height & vertical-align 字体 font-weight 400 normal 700 bold background-attachment

SpringBoot项目集成JetCache缓存框架步骤

JetCache是阿里开源的基于java开发的缓存框架&#xff0c;支持多种缓存类型&#xff1a;本地缓存、分布式缓存、多级缓存。能够满足不同业务场景的缓存需求。 1.导入依赖 <!--jetcache缓存 --> <dependency><groupId>com.alicp.jetcache</groupId>&l…

【调试笔记-20240516-Windows-使用VS2019编译edk2(上)】

调试笔记-系列文章目录 调试笔记-20240516-Windows-使用VS2019编译edk2&#xff08;上&#xff09; 文章目录 调试笔记-系列文章目录调试笔记-20240516-Windows-使用VS2019编译edk2&#xff08;上&#xff09; 前言一、安装开发工具1. 安装 VS20192. 安装 Python 3.103. 安装 …

pdf加水印怎么加?3种添加水印方法分享

pdf加水印怎么加&#xff1f;PDF加水印不仅是为了保护文档内容&#xff0c;确保信息的安全性和完整性&#xff0c;更是一种有效的版权保护措施。通过添加水印&#xff0c;您可以在文档中嵌入公司名称、日期、编号等信息&#xff0c;以明确文档的归属权和使用限制。此外&#xf…

小而美:两步完成从源码到应用的极简交付

作者&#xff1a;花三&#xff08;王俊&#xff09; Serverless 应用引擎 SAE 是阿里云推出的一款零代码改造、极简易用、自适应弹性的容器化应用托管平台&#xff0c;面市以来为几万家企业客户提供服务&#xff0c;运行稳定&#xff0c;广受好评。 SAE 的出现解决了众多企业…

Python库之lxml的简介、安装、使用方法详细攻略

Python库之lxml的简介、安装、使用方法详细攻略 简介 lxml是一个用于处理XML和HTML文档的Python库&#xff0c;它提供了简单易用的API来解析和生成这些文档。lxml以其性能和易用性而受到广泛欢迎&#xff0c;特别适合于需要处理大量数据或需要高性能解析的场景。 安装 安装…

运行时异常和编译时异常的区别

Java中的异常被分为两大类&#xff1a;编译时异常和运行时异常。 都是RuntimeException类及其子类异常&#xff0c;如NullPointerException、IndexOutOfBoundsException。这些异常是不检查异常&#xff0c;运行时异常的特点是Java编译器不会检查它&#xff0c;程序中可以选择捕…