当前位置: 首页 > news >正文

代码随想录算法训练营第五十九天丨503. 下一个更大元素 II、42. 接雨水

503. 下一个更大元素 II

还是比较容易想的,扩展数组一倍即可。

class Solution:def nextGreaterElements(self, nums: List[int]) -> List[int]:extended_nums = nums * 2n = len(nums)mono = []res = [- 1] * nfor i, num in enumerate(extended_nums):while mono and extended_nums[mono[-1]] < num:if mono[-1] < n:res[mono[-1]] = nummono.pop()mono.append(i)return res

看了代码随想录的题解可以用%运算减少空间复杂度。

class Solution:def nextGreaterElements(self, nums: List[int]) -> List[int]:n = len(nums)mono = []res = [- 1] * nfor i in range(2 * n):while mono and nums[mono[-1]] < nums[i % n]:res[mono[-1]] = nums[i % n]mono.pop()mono.append(i % n)return res

42. 接雨水

手撕成功!

维护单调栈找右边第一个大的就是右边界,这时候把当前元素pop出来,如果栈不为空,说明左边也有比当前元素大的左边界,那么这俩边界之间就可以接雨水!!!

class Solution:def trap(self, height: List[int]) -> int:res = 0mono = []for right in range(len(height)):while mono and height[mono[-1]] < height[right]:cur = mono.pop()if mono:left = mono[-1]res += (right - left - 1) * (min(height[left], height[right]) - height[cur])mono.append(right)return res

信心巨大增强!!!

记录一下双指针暴力解法:

class Solution:def trap(self, height: List[int]) -> int:n = len(height)if n == 0:return 0ans = 0for i in range(1, n - 1):  # 对于每个位置max_left = max(height[:i])  # 找到左边的最大值max_right = max(height[i+1:])  # 找到右边的最大值# 计算当前位置能接的雨水量water = min(max_left, max_right) - height[i]if water > 0:ans += waterreturn ans

动态规划解法:

class Solution:def trap(self, height: List[int]) -> int:n = len(height)left_max = [0] * nright_max = [0] * nans = 0# 从左向右计算左侧最大高度left_max[0] = height[0]for i in range(1, n):left_max[i] = max(left_max[i - 1], height[i])# 从右向左计算右侧最大高度right_max[n - 1] = height[n - 1]for i in range(n - 2, -1, -1):right_max[i] = max(right_max[i + 1], height[i])# 计算每个位置能接的雨水量,并累加for i in range(n):ans += min(left_max[i], right_max[i]) - height[i]return ans

双指针究极优化:

class Solution:def trap(self, height: List[int]) -> int:left, right = 0, len(height) - 1  # 初始化左右指针left_max, right_max = height[left], height[right]  # 初始化左右最大值ans = 0while left < right:# 更新左侧最大值和右侧最大值left_max = max(left_max, height[left])right_max = max(right_max, height[right])# 根据当前的最大值,计算能接的雨水,并移动指针if left_max < right_max:ans += left_max - height[left]left += 1else:ans += right_max - height[right]right -= 1return ans

今日总结:

接雨水一刷AC,虽然花了1小时,成就感满满。

相关文章:

代码随想录算法训练营第五十九天丨503. 下一个更大元素 II、42. 接雨水

503. 下一个更大元素 II 还是比较容易想的&#xff0c;扩展数组一倍即可。 class Solution:def nextGreaterElements(self, nums: List[int]) -> List[int]:extended_nums nums * 2n len(nums)mono []res [- 1] * nfor i, num in enumerate(extended_nums):while mono…...

全代码分享|R语言孟德尔随机化怎么做?TwoSampleMR包MR一套标准流程

文章目录 1.前言1.1 成立条件1.2 三大要素1.3 统计原理 2.demo2.1 加载R包2.2 主要MR分析2.3 MR补充分析、多态性、验证 2.4 结果可视化 1.前言 孟德尔随机化(Mendelian randomization&#xff0c;MR)是一种利用基因变异作为工具变量来评估暴露与结果之间因果关系的统计方法。…...

【AI视野·今日NLP 自然语言处理论文速览 第八十四期】Thu, 7 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 7 Mar 2024 Totally 52 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers The Heuristic Core: Understanding Subnetwork Generalization in Pretrained Language Models Authors Adith…...

英伟达推出免训练,可生成连贯图片的文生图模型ConsiStory,生成角色一致性解决新方案

目前&#xff0c;多数文生图模型皆使用的是随机采样模式&#xff0c;使得每次生成的图像效果皆不同&#xff0c;在生成连贯的图像方面非常差。 例如&#xff0c;想通过AI生成一套图像连环画&#xff0c;即便使用同类的提示词也很难实现。虽然DALLE 3和Midjourney可以对图像实现…...

Jmeter 性能 —— 50TPS与秒杀分析!

1、50tps——5tps分析 50tps基本上已经满足了大部分中小型企业要求了 需求&#xff1a;期望我项目的接口&#xff0c;都要能满足50tps&#xff1f; 算 50tps&#xff1a;50 个事务每秒50 t/s 1分钟&#xff1a;50\*60s 3000 事务1小时 3000 \* 60 180000 事务 1小时要处理…...

【前端】如何计算首屏及白屏时间

文章目录 一、首屏时间二、白屏时间 一、首屏时间 白屏时间&#xff1a;页面渲染完所有内容的时间 简单点就是在<body> 标签后写js代码计算&#xff0c;但是不是很准确 <head><title>白屏时间</title> </head> <body></body> <s…...

重学SpringBoot3-ServletWebServerFactoryAutoConfiguration类

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-ServletWebServerFactoryAutoConfiguration类 工作原理关键组件以TomcatServletWebServerFactory为例ServletWebServerFactory会创建webServer的时机关键…...

FileZillaClient连接被拒绝,无法连接

1.ECONNREFUSED - 连接被服务器拒绝 2、无法连接FZ时&#xff0c;判断没有ssh 更新源列表&#xff1a; sudo apt-get update 安装 openssh-server &#xff1a;sudo apt-get install openssh-server 查看是否启动ssh&#xff1a;sudo ps -e | grep ssh...

每日一面——成员初始化列表、移动构造和拷贝构造

写前声明&#xff1a;参考链接 C面经、面试宝典 等 ✊✊✊每日一面——成员初始化列表、移动构造和拷贝构造 一、类成员初始化方式&#xff1f;构造函数的执行顺序&#xff1f;为什么用成员初始化列表会快一些&#xff1f;二、final和override关键字三、拷贝初始化和直接初始化…...

OPC UA 服务器的Web访问

基于Web 的应用非常普及&#xff0c;例如基于web 的SCADA &#xff0c;物联网 Dashboard 等等&#xff0c;那么基于Web 的应用如何访问OPC UA 服务器呢&#xff1f;本博文讨论这方面的问题。 Web 的通信方式 Web 是我们通常讲的网站&#xff0c;它由浏览器&#xff0c;HTTP 服…...

docker 子网

当需要给容器分配指定 ip &#xff0c;为避免ip 冲突&#xff0c;指定容器子网处理 创建 subnet 子网 docker network create --subnet 10.0.0.0/24 --gateway 10.0.0.1 subnet-testdocker network ls NETWORK ID NAME DRIVER SCOPE ... f582ecf297bc sub…...

QT使用RabbitMQ

文章目录 1.RabbitMQ 客户端下载地址:1.1RabbitMQ基本结构:2.搭建RabbitMQ server3.安装步骤4.运行4.1 报错问题解决5.使用5.1 配置Web管理界面6.常用命令总结7.Qt客户端编译7.1 这里重点强调一下,这个文件需要改成静态库7.2 下载地址:(qamqp自己下载,下载成功后,静态编译…...

什么是R语言?什么是R包?-R语言001

R语言是一种专为统计计算和图形而设计的编程语言和环境。它最初由罗斯伊哈卡和罗伯特亨特尔在1993年创建&#xff0c;灵感来源于S语言。R语言已经发展成为统计学、数据分析、科学研究以及许多其他领域中最受欢迎和广泛使用的工具之一。R语言的核心是一个开源的解释型语言&#…...

Java17 --- springCloud之LoadBalancer

目录 一、LoadBalancer实现负载均衡 1.1、创建两个相同的微服务 1.2、在客户端80引入loadBalancer的pom 1.3、80服务controller层&#xff1a; 一、LoadBalancer实现负载均衡 1.1、创建两个相同的微服务 1.2、在客户端80引入loadBalancer的pom <!--loadbalancer-->&…...

Mac(含M1) 使用 brew 安装nvm

目录 Mac 安装nvm 下载命令 配置环境变量 刷新 Mac(M1) 安装nvm 搜索 下载 为nvm创建文件夹 配置环境变量 刷新 Mac 安装nvm 下载命令 brew install nvm 配置环境变量 vi ~/.zshrc 内容如下&#xff1a; export NVM_DIR"$HOME/.nvm"[ -s "/usr/local…...

优秀的前端框架vue,原理剖析与实战技巧总结【干货满满】

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属的专栏&#xff1a;前端零基础教学&#xff0c;实战进阶 景天的主页&#xff1a;景天科技苑 文章目录 Vuevue.js库的基本使用vue.js的M-V-VM思…...

<2024最新>ChatGPT逆向教程

前言 在使用本篇文章用到的项目以及工具时,需要对其有一定的了解,无法访问以及无法使用的问题作者不承担任何责任,可以自行想办法解决遇到的问题​。 文章若有不合适,有问题的地方,请私聊指出,谢谢~ 准备工具 一台至少 2 核 2G 内存的服务器,推荐是位于香港、新加坡或…...

C#编程技巧--2

1.使用泛型: 泛型允许你编写更加灵活和可重用的代码&#xff0c;同时提高类型安全性。 C# 中的泛型功能允许你编写更加灵活和可重用的代码&#xff0c;并且可以增加类型安全性。通过使用泛型&#xff0c;你可以编写适用于不同类型的代码&#xff0c;而无需为每种类型单独重写代…...

设计模式 代理模式

代理模式主要使用了 Java 的多态&#xff0c;主要是接口 干活的是被代理类&#xff0c;代理类主要是接活&#xff0c; 你让我干活&#xff0c;好&#xff0c;我交给幕后的类去干&#xff0c;你满意就成&#xff0c;那怎么知道被代理类能不能干呢&#xff1f; 同根就成&#xff…...

关于学习时间

这篇文章我来说一下我对于我最近学习时间的一些思考。 早上和下午是我最为活跃和高效的时间段。 我能够专注地工作&#xff0c;不容易分心。 然而&#xff0c;到了晚上&#xff0c;我的状态开始下降&#xff0c;这是很正常的情况。 由于早上和下午的专注学习&#xff0c;我的大…...

2026最权威的十大AI辅助写作平台横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于深度学习模型的论文一键生成技术&#xff0c;可快速整合文献资料&#xff0c;能提取核心…...

2025 ICPC武汉邀请赛 G [根号分治 容斥原理+DP]

Problem - G - Codeforces 观察题目&#xff0c;我们可以用贡献法&#xff0c; 计算每个格子的贡献&#xff0c;然后累加起来&#xff0c;对于重复的部分我们要减去 1.路径数量 首先&#xff0c;计算两个位置间有多少种路径互通&#xff0c;我们可以利用组合数进行计算&#x…...

医学图像分类与诊断数据集5040张VOC+YOLO

医学图像分类与诊断数据集5040张VOCYOLO数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5040 标注数量(xml文件个数)&#xff1a;5040 标注数…...

告别英雄联盟繁琐操作:3大核心功能让你轻松掌控游戏节奏

告别英雄联盟繁琐操作&#xff1a;3大核心功能让你轻松掌控游戏节奏 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在快节奏的英雄联盟对局中…...

如何轻松管理空洞骑士模组?Lumafly跨平台模组管理器详解

如何轻松管理空洞骑士模组&#xff1f;Lumafly跨平台模组管理器详解 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly 还在为空洞骑士模组安装的复杂流程而烦恼吗…...

C语言的初步认识

大家好&#xff01;我是河南计算机专业的一名大一学生&#xff0c;很高兴今天加入博客大团体并写下我人生中的第一篇博客&#xff0c;在此我将会记录我大学中的编程生活。1.函数函数是C语言的基本组成单位&#xff0c;初识C语言&#xff0c;我们遇见的第一个函数是main函数&…...

快速原型利器:在快马平台一键对比不同AI模型的代码生成效果

最近在开发一个需要快速验证AI模型代码生成能力的项目时&#xff0c;发现手动切换不同模型测试效率太低。于是尝试用InsCode(快马)平台搭建了个模型对比工具&#xff0c;意外地好用&#xff0c;分享下具体实现思路和踩坑经验。 核心需求拆解 这个工具的核心目标是解决三个痛点&…...

Amundsen多租户架构:企业级数据隔离的终极解决方案

Amundsen多租户架构&#xff1a;企业级数据隔离的终极解决方案 【免费下载链接】amundsen Amundsen is a metadata driven application for improving the productivity of data analysts, data scientists and engineers when interacting with data. 项目地址: https://git…...

如何快速解锁WeMod Pro功能:Wand-Enhancer完整免费指南

如何快速解锁WeMod Pro功能&#xff1a;Wand-Enhancer完整免费指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer Wand-Enhancer是一款强大的开源工具&…...

谷歌开源Gemma 4:256K原生多模态,免费商用

谷歌刚刚发布了新一代开源大模型Gemma 4&#xff0c;直接把Gemini 3的核心技术下放了。2026年4月2日&#xff0c;谷歌如约献上复活节惊喜&#xff1a;Gemma 4 正式开源。从手机到服务器全覆盖四种规格&#xff0c;首次加入MoE架构&#xff0c;原生支持文本图像音频三模态&#…...