LeetCode--42

42. 接雨水

給定?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

提示:

  • n == height.length
  • 1 <= n <= 2 * 104
  • 0 <= height[i] <= 105

先看我的代碼:

class Solution {
public:int trap(vector<int>& height) {int len=height.size();auto Maxheight=max_element(height.begin(),height.end());int maxheight=*Maxheight;int num=0;for(int i=1;i<=maxheight;i++){vector<int> a;int id=-1;for(int j=0;j<len;j++){if(height[j]>=i){a.push_back(j);id++;if(id>0)num+=a[id]-a[id-1]-1;}}}return num;}
};

有一個小缺陷,不能通過所有的測試案例:

只有4個測試案例沒有通過,說明我的思路是正確的,但是沒有考慮到時間復雜度,說沒有考慮也不對,我剛開始寫出的代碼是這樣的:

class Solution {
public:int trap(vector<int>& height) {int len=height.size();auto Maxheight=max_element(height.begin(),height.end());int maxheight=*Maxheight;int num=0;for(int i=1;i<=maxheight;i++){vector<int> a;for(int j=0;j<len;j++){if(height[j]>=i)a.push_back(j);}int Si=a.size();if(Si>=2){for(int h=0;h<Si-1;h++){num+=a[h+1]-a[h]-1;}}}return num;}
};

顯然,這樣時間復雜度更大。

下面 是標準答案:

class Solution {
public:int trap(vector<int>& height) {int n=height.size();if(n==0){return 0;}vector<int>leftMax(n);leftMax[0]=height[0];for(int i=1;i<n;i++){leftMax[i]=max(leftMax[i-1],height[i]);}vector<int>rightMax(n);rightMax[n-1]=height[n-1];for(int i=n-2;i>=0;i--){rightMax[i]=max(rightMax[i+1],height[i]);}int ans=0;for(int i=0;i<n;i++){ans+=min(leftMax[i],rightMax[i])-height[i];}return ans;}
};

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716215.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PackagingTool_x64_v2.0.1.0圖片轉檔打包二進制文件合并字庫生成圖片軟件介紹

繼去年12月份發布的打包軟件PackagingTool v1.4.0.2之后&#xff0c;今年再度投入精力&#xff0c;完善了軟件功能&#xff0c;同時開發了幾個更加實用的工具&#xff0c;可助力UI界面的設計開發。當前最新版本為PackagingTool_x64_v2.0.1.0&#xff0c;該版本主界面如下&#…

Windows操作系統中各種功能、快捷鍵

目錄 引言一、系統1.任務管理器&#xff08;當前進程屬性&#xff09;2.畫圖板3.計算器4.CMD命令行窗口5.控制面板6.記事本7.寫字板 二、瀏覽器1.打開開發者工具2.頁面搜索 三、AcWing1.替換2.對多處進行相同操作3.光標變為下劃線 引言 由于本專業是計算機專業&#xff0c;所以…

Spring Cloud中,Eureka常見問題總結

Spring Cloud中&#xff0c;Eureka常見問題總結。 指定Eureka的Environment 1eureka.environment: 指定環境參考文檔&#xff1a;Configuring Eureka Netflix/eureka Wiki GitHub 指定Eureka的DataCenter 1eureka.datacenter: 指定數據中心參考文檔&#xff1a;Configuring …

SpringBoot:Invalid bound statement (not found)的原因和解決方案

&#x1f413; 報錯信息&#xff1a; &#xff08;無效綁定聲明&#xff09;找不到 解析&#xff1a; 你的mapper實例對象和對應的mapper.xml對象未找到 &#x1f413; 排查&#xff1a; 情況一&#xff1a; 1.排除相對應的mapper實例對象路徑是否正確 查看相對應的mapper中…

unity3d中單例模式兩種簡單寫法與對比

一、 public class UlManager {private static UlManager instance;private void Awake(){if(instance ! null)Destroy(this);else instance this;} }二、 public class UlManager {private static UlManager instance;public static UlManager Instance{get{if (instance …

ChatGPT聊YOLO

最近ChatGPT大伙&#xff0c;其概括摘要能力非常強。YOLO系列算法也是目標檢測領域非常重要的一個研究路線&#xff0c;那么ChatGPT是如何看待各個YOLO算法的呢&#xff1f;那我們去問問它如何看待各個版本的YOLO。 截止到2021年9月&#xff0c;YOLOv6尚未發布。因此&#xff0…

類復習【C#】

【訪問級別】【修飾】【返回類型】 類名 : 【被繼承類】【被繼承接口】 { 字段&#xff1b; 屬性&#xff1b; 默認構造器&#xff1b;// 無參構造器 有參構造器&#xff1b; 私有方法&#xff1b; public 公共方法&#xff1b; } 修飾&#xff1a; 修飾符【C#】-CSDN…

pycharm實現上傳excel生成word

下載需要的依賴包 pip install openpyxl python-docx flaskmain.py文件 from flask import Flask, request, render_template from openpyxl import load_workbook from docx import Documentapp Flask(__name__, template_foldertemplates)app.route(/) def index():return…

小程序面試題:js、vue、uni、小程序的頁面傳參方式區別

js、vue、uni、小程序的頁面傳參方式區別&#xff1f; 1、 js傳參 通過location.href跳轉傳參和接收參數&#xff0c;url后面拼接參數來進行跳轉傳參。 2、 vue傳參 可以通過標簽router-link的to屬性跳轉傳參&#xff0c;也可以通過事件里的this.$router.push跳轉傳參。傳參有…

寒假作業Day 03

寒假作業Day 03 一、選擇題 在C語言中&#xff0c;字符型指針char *p;通常用于指向字符數組&#xff08;即字符串&#xff09;的首字符。對于給定的選項&#xff0c;我們來分析每一個選項是否可以將字符串正確地賦值給p&#xff1a; A: pgetchar(); getchar()函數從標準輸入讀…

K8S—Pod控制器

目錄 1.什么是POD控制器 2.POD控制器有幾種類型 3.POD與控制器之間的關系 4.示例 4.1 Deployment 4.2 SatefulSet ①為什么要有headless&#xff1f; ②為什么要有volumeClainTemplate&#xff1f; ③服務發現&#xff1a;就是應用服務之間相互定位的過程。 ④K8S里服…

圖的簡單介紹

定義及術語 G(V,E)&#xff1a;圖G的頂點集為V&#xff0c;邊集為E。分為有向圖和無向圖兩類。 頂點的度&#xff1a;與該結點相連的邊的條數。 出度&#xff1a;頂點的出邊條數 入度&#xff1a;頂點的入邊條數 頂點的權值稱為點權&#xff0c;邊的權值稱為邊權。 存儲 1.鄰…

SpringCache【緩存接口返回值信息】【前端訪問后端,后端訪問數據庫(可以緩存這個過程,前端訪問后端,保存記錄,下次訪問直接返回之前的數據)】

SpringCache 針對不同的緩存技術需要實現不同的CacheManager&#xff1a;注解入門程序CachePut注解CacheEvict注解Cacheable注解 Spring Cache是一個框架&#xff0c;實現了基于注解的緩存功能&#xff0c;只需要簡單地加一個注解&#xff0c;就能實現緩存功能&#xff0c;大大…

Mongodb基礎(node.js版)

一、Mongodb 介紹 Mongodb 是一個文檔數據庫&#xff0c;以文檔形式存儲數據&#xff0c;格式類似于 JSON 與 Mysql 的特點及選型對照 MongodbMysql關系類型非關系型關系型存儲類型文檔存儲&#xff08;類似于寫 Word &#xff09;表格存儲 &#xff08;類似于寫 Excle&…

Java玩轉《啊哈算法》之模擬鏈表

人應該支配習慣&#xff0c;而絕不是讓習慣支配人。一個人要是不能改掉壞習慣&#xff0c;那么他就一文不值。 目錄 緣代碼地址模擬鏈表創建遍歷打印插入插入優化 完整代碼 緣 各位小伙伴們好呀&#xff01;本人最近看了下《啊哈算法》&#xff0c;寫的確實不錯。 但稍顯遺憾…

【C++】string 類 ( 上)

標準庫中的string類 注意&#xff1a; 1. string是表示字符串的字符串類 2. 該類的接口與常規容器的接口基本相同&#xff0c;再添加了一些專門用來操作string的常規操作。 比特就業課 3. string在底層實際是&#xff1a;basic_string模板類的別名&#xff0c;typedef basi…

python爬蟲之selenium知識點記錄

selenium 一、前期準備 1、概述 selenium本身是一個自動化測試工具。它可以讓python代碼調用瀏覽器。并獲取到瀏覽器中加載的各種資源。 我們可以利用selenium提供的各項功能。 幫助我們完成數據的抓取。 2、學習目標 掌握 selenium發送請求&#xff0c;加載網頁的方法 掌…

Stable-Diffusion ubuntu服務器部署,報錯解決方法(小白教程)

Stable Diffusion是一個深度學習模型&#xff0c;專注于生成高質量的圖像。它由CompVis團隊與Stability AI合作開發&#xff0c;并在2022年公開發布。這個模型使用文本提示&#xff08;text prompts&#xff09;生成詳細、逼真的圖像&#xff0c;是目前人工智能圖像生成領域的一…

逆向案例四:360k靜態和精靈數據動態AES解密,用js的方法

一、360K 網頁鏈接:https://www.36kr.com/p/2672600261670407 頁面中有靜態的需要解密的內容&#xff0c;確定html包&#xff0c;確定方法 1.1方法步驟 在下方的搜索中輸入decrypt(或者關鍵字window.initialState &#xff0c;進入js文件 在AES.decrypt處打上斷點&#xff0…

機器學習-03-機器學習算法流程

總結 本系列是機器學習課程的第02篇&#xff0c;主要介紹機器學習中專家系統的應用介紹 本門課程的目標 完成一個特定行業的算法應用全過程&#xff1a; 定義問題&#xff08;Problem Definition&#xff09; -> 數據收集(Data Collection) -> 數據分割(Dataset Spit…