news 2026/5/19 13:04:39

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/5/9 2:28:18

当9.9元体验课变成万元陷阱:测试工程师的认知税惨痛实录

"学完自动化测试课程薪资翻倍&#xff01;"——某机构广告承诺与学员实际就业率反差超60% 一、测试行业三大收割套路&#xff1a;你的焦虑正在被精准定价 低价钩子高价沉没 9.9元Selenium速成课引流&#xff0c;两周后推送"限时优惠"的万元全栈课。某学员…

作者头像 李华
网站建设 2026/5/15 3:36:44

Pytest Fixture 作用域与接口测试 Token 污染问题实战解析

引言 在做接口自动化测试时&#xff0c;你可能遇到过这样的情况&#xff1a;单独运行某个用例一切正常&#xff0c;但批量跑测试时&#xff0c;大量接口返回 401 或权限错误。这通常是 fixture 生命周期与共享状态导致的问题。本文结合实际场景&#xff0c;带你深入理解 Pytest…

作者头像 李华
网站建设 2026/5/15 15:39:04

【deepseek】多任务调度详解

RT-Thread 多任务调度详解 &#x1f4ca; 调度器架构 RT-Thread 采用基于优先级的抢占式调度&#xff0c;支持时间片轮转&#xff1a; 1. 任务状态 // 任务状态定义 RT_THREAD_INIT // 初始状态 RT_THREAD_READY // 就绪状态 RT_THREAD_RUNNING // 运…

作者头像 李华
网站建设 2026/5/15 11:33:25

如何设计Agentic AI的“引导式反馈”?提示工程架构师的5个技巧

如何设计Agentic AI的“引导式反馈”?提示工程架构师的5个实战技巧 一、引言:为什么你的Agent反馈总“踩坑”? 你有没有过这样的经历? 让Agent写一份产品推广方案,反馈“这个方案不够有冲击力”,结果它改出来的版本更平淡了; 让Agent处理客户投诉,反馈“回复要更友好…

作者头像 李华
网站建设 2026/5/15 15:40:42

基于Python+Django的框架的襄阳四方汽车检测站管理系统(源码+lw+部署文档+讲解等)

课题介绍本课题针对襄阳四方汽车检测站管理中存在的检测预约低效、车辆检测记录杂乱、检测人员排班不便、设备维护不及时、检测报告生成繁琐等痛点&#xff0c;设计并实现基于PythonDjango的襄阳四方汽车检测站管理系统。后端采用Python语言结合Django框架搭建高效稳定的服务架…

作者头像 李华
网站建设 2026/5/15 15:41:08

基于Python+Django的协同过滤算法在线教育平台的设计与实现(源码+lw+部署文档+讲解等)

课题介绍本课题针对在线教育平台中课程推荐同质化、用户找课效率低、学习需求与课程匹配度不足、学习体验不佳等痛点&#xff0c;设计并实现基于PythonDjango的协同过滤算法在线教育平台。后端采用Python语言结合Django框架搭建高效稳定的服务架构&#xff0c;整合ORM框架实现数…

作者头像 李华