首页 > 其他分享 >经典接雨水-刷题笔记

经典接雨水-刷题笔记

时间:2023-09-10 18:00:53浏览次数:32  
标签:rightMax int max 雨水 height 笔记 public Math 刷题

leetcode42

按行求(测试用例通过,但超时)

class Solution {
    public int trap(int[] height) {
    
        int res=0;
        int n=height.length;
        int maxh=0;
        for(int i=0;i<n;i++){
            maxh=Math.max(maxh,height[i]);
        }
        for(int row=1;row<=maxh;row++){
            int tmp=0;          
            int i=0;
            while(height[i++]<row);
            while(i<n){
                if(height[i]<row){
                    tmp++;
                }else{
                    res+=tmp;
                    tmp=0;
                }
                i++;
            }
        }
        return res;
    }
}

按列求(通过,耗时久)

class Solution {
    public int trap(int[] height) {
    
        int sum=0;
        for(int i=1;i<height.length-1;i++){
            int max_left=0;
            for(int j=i-1;j>=0;j--){   
                max_left=Math.max(max_left,height[j]);               
            }
            int max_right=0;
            for(int j=i+1;j<=height.length-1;j++){   
                max_right=Math.max(max_right,height[j]);               
            }
            sum+=Math.min(max_left,max_right)>height[i]?Math.min(max_left,max_right)-height[i]:0;
        }
        return sum;
    }
}

DP(快,按列求升级版)

class Solution {
    public int trap(int[] height) {

        int n=height.length;
        int[] leftMax=new int[n];
        int[] rightMax=new int[n];
        leftMax[0]=height[0];
        rightMax[n-1]=height[n-1];
        int res=0;
        for(int i=1;i<n;i++){
            leftMax[i]=Math.max(leftMax[i-1],height[i]);
        }

        for(int i=n-2;i>=0;i--){
            rightMax[i]=Math.max(rightMax[i+1],height[i]);
        }

        for(int i=1;i<n-1;i++){
            int lrMax=Math.min(leftMax[i-1],rightMax[i+1]);
            if(height[i]<lrMax){
                res+=lrMax-height[i];
            }
        }
        return res;
    }   
}

标签:rightMax,int,max,雨水,height,笔记,public,Math,刷题
From: https://blog.51cto.com/u_16255634/7427312

相关文章

  • 20211421《信息安全系统设计与实现》第一周学习笔记
    知识点总结第一章关于本书研究Unix/Linux系统编程的专著,涵盖Unix/Linux的所有基本组件,包括进程管理、并发编程、定时器和时钟服务、文件系统、网络编程和MySQL数据库系统。本书目标强化学生编程背景知识动态数据结构的应用进程概念和进程管理并发编程定时器和定时功能......
  • 学习笔记1
    ChatGpt的苏格拉底挑战:有关内核:linux系统的核心是内核。内核控制着计算机系统的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。内核主要负责以下4种功能。·系统内存管理·软件程序管理·硬件设备管理·文件系统管理  有关GCC:GNUCompilerCollection,编译器集合......
  • Node.js+Express+Koa2开发接口学习笔记(二)
    搭建开发环境从0开始搭建,不适用任何框架使用nodemon监测文件变化,自动重启node使用cross-env设置环境变量,兼容maxlinux和windows创建项目文件夹blog-1,在终端输入命令npminit-y在根目录下创建bin=>www.js文件,将初次运行的文件www.js存放在bin目录下。同时需要修改pack......
  • 20211314王艺达信息安全系统设计与实现学习笔记(1)
    作业要求链接https://www.mosoteach.cn/web/index.php?c=interaction_homework&m=s_write&clazz_course_id=97072AE7-2C45-11EE-8539-1C34DA7B3F7C&id=F3080EAA-E3B7-414E-B311-938F0B8988F0&order_item=group&status=IN_PRGRS第一章学习总结及自测知识点归纳什么是Unix/Linux......
  • 【学习笔记】折半搜索 Meet In The Middle
    点击查看目录目录算法实现杂题乱写[CEOI2015Day2]世界冰球锦标赛题单oi-wiki算法实现我们正常的搜索应该是一个指数级的:\(2^n\)。然而我们可以把这个搜索拆成两半,设小于整张图的限制\(limit\)为合法:对于上半搜索,我们有若干符合限制的答案\(sum_1\),对于下半搜索,我......
  • swift5笔记(五):字典
    swift5笔记(五):字典Harry__Li关注IP属地:陕西2022.10.3115:48:06字数31阅读176初始化swift中需要指出字典中的类型//初始化字典varmdict:[String:Any]=[:]varmdict1=[String:Any]()letdict:[String:Any]=["name":"lhr","age":"100"]增加......
  • 《信息安全系统设计与实现》第一周学习笔记
    第一章引言关于本书本书是一部研究Unix/Linux系统编程的专注系统编程的作用系统编程是计算机科学和计算机工程教育不可或缺的一部分本书目标强化学生变成背景知识动态数据结构的应用进程概念和进程管理并发编程定时器和定时功能信号、信号处理......
  • 【学习笔记】折半搜索 Meet In The Middle
    点击查看目录目录算法实现杂题乱写[CEOI2015Day2]世界冰球锦标赛题单oi-wiki算法实现我们正常的搜索应该是一个指数级的:\(2^n\)。然而我们可以把这个搜索拆成两半,设小于整张图的限制\(limit\)为合法:对于上半搜索,我们有若干符合限制的答案\(sum_1\),对于下半搜索,我......
  • Leetcode刷题本地debug框架搭建
    思路1.初版cmake+单一.cpp文件参考:https://blog.songjiahao.com/archives/3622.改良版cmake+源文件、头文件(含List、Tree等数据结构)分离+gtest参考:https://github.com/Pokerpoke/LeetCode Normal模板以Leetcode1两数之和为例#include<iostream>#include......
  • 《信息安全系统设计与实现》第一周学习笔记
    《信息安全系统设计与实现》第一周学习笔记第一章关于本书介绍Unix/Linux的功能,着重探讨了编程实践,让学生通过实践来练习系统编程,涵盖Unix/Linux的所有基本组件,包括进程管理、并发编程、定时器和时钟服务、文件系统、网络编程和MySQL数据库系统。系统编程的作用系统编......