news 2026/9/30 10:45:15

leetcode 907. Sum of Subarray Minimums 子数组的最小值之和-内存100

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 907. Sum of Subarray Minimums 子数组的最小值之和-内存100

Problem: 907. Sum of Subarray Minimums 子数组的最小值之和

内存100%,统计了每个数字的贡献,像 3 1 2 4, 3只贡献了1次,1贡献了 2 * 3 = 6 次,2贡献了2次,4贡献了1次

上面1的贡献次数,是统计左侧>=1的个数=2(3 1和1),统计右侧<=1的个数=3(1和1 2和1 2 4),

当出现相邻重复数字的时候,像3 3,只统计左侧==,共3个子数组(3, 3 3, 3)

Code

class Solution { public: const int modulo = 1e9 + 7; int sumSubarrayMins(vector<int>& arr) { int l, r, n = arr.size(); long long sum = 0; for(int i = 0; i < n; i++) { l = i - 1; r = i + 1; while(l >= 0 && arr[l] >= arr[i]) l--; while(r < n && arr[r] > arr[i]) r++; sum += ( ((long long)arr[i] * (long long)(i - l) * (long long)(r - i)) % modulo ); sum %= modulo; } return sum; } };

官方题解使用单调栈,求出了每个数字左右的长度,时间复杂度减少到O(n)

class Solution { public: const int modulo = 1e9 + 7; int sumSubarrayMins(vector<int>& arr) { int l, r, n = arr.size(); long long sum = 0; vector<int> stackmono; vector<int> left(n), right(n); for(int i = 0; i < n; i++) { while(stackmono.size() > 0 && arr[i] <= arr[stackmono.back()]) { stackmono.pop_back(); } left[i] = i - (stackmono.size()==0? -1 : stackmono.back()); stackmono.emplace_back(i); } stackmono.clear(); for(int i = n-1; i >= 0; i--) { while(stackmono.size() > 0 && arr[i] < arr[stackmono.back()]) { stackmono.pop_back(); } right[i] = (stackmono.size()==0? n : stackmono.back()) - i; stackmono.emplace_back(i); } for(int i = 0; i < n; i++) { sum = (sum + (long long)arr[i] * (long long)left[i] * (long long)right[i]) % modulo; } return sum; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 5:08:02

基于Python+Django青岛滨海学院县志捐赠与借阅信息管理系统(源码+lw+部署文档+讲解等)

课题介绍 本课题针对青岛滨海学院县志捐赠与借阅管理中存在的县志档案杂乱、捐赠信息登记繁琐、借阅流程低效、归还提醒不及时、库存统计不便、捐赠者信息管理分散等痛点&#xff0c;设计并实现基于PythonDjango的青岛滨海学院县志捐赠与借阅信息管理系统。后端采用Python语言结…

作者头像 李华
网站建设 2026/9/29 17:34:23

软件测试公众号热度内容解析:专业视角下的三大爆款赛道

2026年&#xff0c;软件测试公众号的热度内容高度专业化&#xff0c;阅读量破万的文章集中于三大类型&#xff0c;均以解决从业者实际痛点为内核。这些内容如同鹤岗的“双极人生”&#xff0c;在技术深度&#xff08;代码&#xff09;与实用韧性&#xff08;冰雕&#xff09;间…

作者头像 李华
网站建设 2026/9/29 18:37:48

从职业烧伤到AI心理教练:开发者的自愈之路

在软件测试领域&#xff0c;职业倦怠&#xff08;俗称“职业烧伤”&#xff09;已成为普遍挑战&#xff0c;源于高强度工作、项目压力和创新需求匮乏。数据显示&#xff0c;2026年初&#xff0c;测试从业者离职率上升&#xff0c;部分原因包括长时间调试代码、应对紧急交付和缺…

作者头像 李华
网站建设 2026/9/26 1:48:34

20260205_183713_Agent四大范式___CRITIC:吴恩达力推Agent设

摘要 近期大型语言模型&#xff08;LLMs&#xff09;的进展令人瞩目。然而&#xff0c;这些模型偶尔会出现矛盾和问题行为&#xff0c;比如虚构事实、编写错误代码或产生攻击性内容。与人类不同&#xff0c;人类通常会借助外部工具来核实和优化他们的内容&#xff0c;例如利用搜…

作者头像 李华
网站建设 2026/9/28 0:18:47

manipulation十年演进

Manipulation&#xff08;操作/操纵&#xff09; 的十年&#xff08;2015–2025&#xff09;&#xff0c;是从“预定义轨迹的重复机械臂”向“具备人类级触觉与通用能力的柔性手”演进的十年。 这十年间&#xff0c;机器人操作的核心挑战从**“精确抓取”转向了“非结构化环境下…

作者头像 李华
网站建设 2026/9/29 9:17:13

计算机毕业设计springboot基于Java的校园内餐厅外送系统 高校智慧餐饮配送服务平台的设计与实现 基于微服务架构的校内食堂在线订餐系统

计算机毕业设计springboot基于Java的校园内餐厅外送系统k8i4c0gg&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着移动互联网技术的快速发展和校园生活节奏的加快&#xff0c…

作者头像 李华