news 2026/4/18 7:02:41

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/3/27 20:08:11

行业巨震背后的技术逻辑

2025年量子计算领域里程碑式突破——我国105比特超导量子原型机“祖冲之三号”问世&#xff0c;推动量子测试技术跃升。然而近期某头部企业量子测试团队集体转向医疗AI的决策&#xff0c;揭示了更深刻的行业变革&#xff1a;高精度测试能力的跨界迁移正成为新趋势。 一、技术共…

作者头像 李华
网站建设 2026/4/4 9:57:19

Shell脚本精品三部曲(上中下篇)【20260204】

文章目录 Shell脚本精品三部曲(上中下篇) 上篇:《Shell脚本入门实战:从零搭建Ubuntu24.04 Shell环境》 适配人群 完整目录(精品经典双人群适配) 第一部分 Shell基础认知与环境搭建(理论奠基教学入门) 第1章 Shell核心认知:Linux/Ubuntu24.04的命令交互核心 第2章 Ubun…

作者头像 李华
网站建设 2026/4/16 1:53:24

基于python的贫困生资助管理系统(源码+lw+部署文档+讲解等)

课题介绍 本课题针对校园贫困生资助管理中存在的申请流程繁琐、资助信息杂乱、审核效率低下、资助名单管控不便、资助数据统计困难等痛点&#xff0c;设计并实现基于Python的贫困生资助管理系统。系统采用Python语言搭建高效稳定的服务架构&#xff0c;整合数据处理框架实现资助…

作者头像 李华
网站建设 2026/4/13 5:19:43

我烧了上亿token玩Clawdbot,结果发现国产平替更香,还免费。

这两天&#xff0c;你的朋友圈&#xff0c;是不是也被 Clawdbot / Moltbot 刷屏了&#xff1f; Github已经10万颗星星了&#xff0c;券商都在高呼&#xff1a;AI Agent 商用元年的拐点正式到来。 更离谱的是&#xff0c;无数人为了跑这玩意&#xff0c;专门去下单Mac Mini&…

作者头像 李华
网站建设 2026/4/17 0:56:26

谐波减速器十年演进

谐波减速器&#xff08;Harmonic Drive&#xff09; 的十年&#xff08;2015–2025&#xff09;&#xff0c;是从“高精密工业孤品”向“具身智能规模化基石”跨越的十年。 作为人形机器人关节的核心&#xff0c;谐波减速器在这十年间经历了从日本技术垄断到国产全面崛起&#…

作者头像 李华