单调栈:LeetCode 907. 子数组的最小值之和

news2024/10/5 14:25:47

907. 子数组的最小值之和

给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。

由于答案可能很大,因此 返回答案模 10^9 + 7 。

思路同乘法原理 LeetCode 828. 统计子串中的唯一字符-CSDN博客

遍历arr[i]时,找左边第一个比arr[i]的下标L,找右边第一个比arr[i]小的下标R。

那么区间左端点取  L+1,i 

区间右端点取i,R-1。

注意如果出现重复元素,这样找会重复计算。

如[1,2,3,4,2] 子数组2,3,4,2在遍历时会加两次2,所以防止重复计算,左边不能取等或右边不能取等。

使用单调栈来找左边第一个比当前数小的下标(数)。

【单调栈】单调栈模板_单调栈 模板_暮色_年华的博客-CSDN博客

使用left[i]表示小于arr[i] 左边的第一个下标

使用right[i]表示小于等于arr[i]右边的第一个下标

class Solution {
public:
    int sumSubarrayMins(vector<int>& arr) {
        const int MOD=1e9+7;
        //使用单调栈
        //left[i]表示arr[i]左边第一个比arr[i]小的下标
        //right[i]表示arr[i]右边第一个比arr[i]小的下标
        stack<int>st;
        int n=arr.size();
        vector<int>left(n,-1);
        vector<int>right(n,n);
        for(int i=0;i<n;i++){
            while(!st.empty()&&arr[st.top()]>=arr[i])st.pop();
            if(st.empty())left[i]=-1;
            else left[i]=st.top();
            st.push(i);
        }
        while(!st.empty())
	st.pop();
        for(int i=n-1;i>=0;i--){
            while(!st.empty()&&arr[st.top()]>arr[i])st.pop();
            if(st.empty())right[i]=n;
            else right[i]=st.top();
            st.push(i);
        }
        long res=0L;
        for(int i=0;i<n;i++){
            res+=(long)(i-left[i])*(right[i]-i)*arr[i];
        }
        return res%MOD;
    }

};

注意取模

long res=0;

res+=(long) ;

res%MOD;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1258304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爱满荣山·和美岩窝-垃圾分类趣味微课堂

在利州区民政局的支持下&#xff0c;利州社工协会在荣山镇岩窝村开展儿童垃圾分类趣味小课堂。

几款令人惊叹的原创AI写作工具

人工智能&#xff08;AI&#xff09;的应用已经深刻地渗透到我们的生活中。其中&#xff0c;AI写作领域以其年轻且迅速发展的特性备受瞩目。探索其中的几款令人惊叹的AI写作工具&#xff0c;它们的功能之酷炫&#xff0c;绝对会让你眼前一亮&#xff01; 147SEO写作&#xff1a…

餐饮店点餐外卖小程序作用是什么

要说街道上各类门店多&#xff0c;那自然当属餐饮店&#xff0c;几乎每条通人的街道旁都有大小餐饮店&#xff0c;该行业是市场经济主要支撑之一&#xff0c;从业商家和品牌都很多&#xff0c;除了小餐饮店外&#xff0c;具备一定规模的门店也不少。 在市场激烈竞争及互联网深…

YOLOv7独家原创改进: AKConv(可改变核卷积),即插即用的卷积,效果秒杀DSConv | 2023年11月最新发表

💡💡💡本文全网首发独家改进:可改变核卷积(AKConv),赋予卷积核任意数量的参数和任意采样形状,为网络开销和性能之间的权衡提供更丰富的选择,解决具有固定样本形状和正方形的卷积核不能很好地适应不断变化的目标的问题点,效果秒殺DSConv 1)AKConv替代标准卷积进行…

pytest系列——pytest-xdist插件之多进程运行测试用例|| pytest-parallel插件之多线程运行测试用例

pytest之多进程运行测试用例(pytest-xdist) 前言 平常我们功能测试用例非常多时&#xff0c;比如有1千条用例&#xff0c;假设每个用例执行需要1分钟&#xff0c;如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时&#xff0c;会需要协调多个测试资源来把任务分成两…

让CHAT简单说明下软件工程师的工作性质

问CHAT&#xff1a;软件工程师的工作性质是什么&#xff1f; CHAT回复&#xff1a;软件工程师的工作性质主要包括以下几点&#xff1a; 1. 解决问题&#xff1a;软件工程师的很大一部分工作就是解决问题&#xff0c;这可能是来自客户的特定需求&#xff0c;也可能是软件开发过…

kali安装内网穿透工具并实现ssh远程连接

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh远程连接kali 1…

如何用CHAT配置linux的远程连接?

问CHAT&#xff1a;配置linux的远程连接 1.下载ssh 2.启动ssh服务 3.查看ssh服务状态 4.设置ssh服务开机自启动 5.设置windows的cmd下ssh 6.通过cmd的ssh命令远程到linux linux的ip:10.8.9.23 用户名:Li CHAT回复&#xff1a;以下是为配置Linux的远程连接的步骤说明&#xff1a…

一文读懂 | AI技术如何驱动企业供应链智能化,赋能企业降本增效?

近年以来&#xff0c;随着互联网技术的发展&#xff0c;AI的创新研究加速。随着大数据、云计算、物联网等信息技术的发展&#xff0c;以深度神经网络为代表的AI技术迅速发展&#xff0c;图像分类、语音识别、知识问答、无人驾驶等AI技术实现了从“不能用、不好用”到“可以用”…

利用广度优先或模拟解决米诺骨牌

本周推荐阅读 C二分算法&#xff1a;得到子序列的最少操作次数 题目 n 张多米诺骨牌排成一行&#xff0c;将每张多米诺骨牌垂直竖立。在开始时&#xff0c;同时把一些多米诺骨牌向左或向右推。 每过一秒&#xff0c;倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。同样…

分享:身份证阅读器在ARM Linux系统调用libwlt2bmp.so解码库实现身份证头像解码

头像解码库&#xff1a;libwlt2bmp.so 照片文件名&#xff1a;photo.bmp 原始身份证相片数据&#xff1a;574C66007E00320000F........&#xff08;此处省略&#xff09; 调用身份证阅读器Linux开发包&#xff0c;然后调用libwlt2bmp.so解码库文件&#xff0c;传入身份证原始…

谭巍主任贴心分享:想要HPV尽快转阴必吃的五种水果

HPV感染是常见的生殖道病毒感染&#xff0c;它可能导致宫颈癌等严重疾病。对于HPV感染者来说&#xff0c;转阴是预防和治疗的关键。北京劲松HPV诊疗中心主任谭巍认为除了接受正规的治疗和注意生活方式的调整外&#xff0c;饮食也是促进HPV快速转阴的重要方面。 一、苹果 苹果…

在思岚A1上复现gmapping

文章目录 软硬件条件laser_scan_matcher通过源码安装rplidar_ros通过源码安装设置参数启动效果预览 软硬件条件 软件&#xff1a;Ubuntu 20.04&#xff0c;ROS noetic 硬件&#xff1a;RPLidar A1. laser_scan_matcher通过源码安装 mkdir -p ~/catkin_ws/src cd ~/catkin_w…

特斯拉开源 Roadster 文件随便用;微软 Copilot AI 技术开放或不对大陆开放丨 RTE 开发者日报 Vol.92

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

【数字化转型方法论读书笔记】-数据中台落地实施之法

让数据中台真正落地是实现数字化转型的重中之重。企业做好数据治理、体系建设及人才配备等前期工作后&#xff0c;接下来要做的是数据中台实施落地的关键。 企业首先要掌握数据中台建设的三大核心要素&#xff1a;选对数据建设方式、厘清建设思路、避开数据中台建设误区&#…

Banana Pi最新的路由器板BPI-R4上市销售,基于MediaTek MT7988A

Banana Pi 发布了一款新的路由器板 Banana Pi BPI-R4&#xff0c;基于配备四核 Arm CPU 的 MediaTek MT7988A SoC。该板不仅仅是Raspberry Pi 的另一个替代品&#xff0c;而且是用于家庭网络和自动化的设备。 Banana Pi BPI-R4 的外形尺寸比单板计算机更像网络设备。对于那些希…

ubuntu22.04识别CH340的问题汇总

一、目的 自己的电脑装的是双系统&#xff0c;ubuntu22.04安装了很久好久没有&#xff08;WSL2确实解决了频繁依赖linux的问题&#xff09;。昨天尝试搞一下STM32MP135的系统搭建&#xff0c;开始启用ubuntu22.04。但是遇到了很多问题&#xff0c;其中一个问题就是CH340的驱动…

【JavaScript】3.2 JavaScript性能优化

文章目录 1. 避免全局查找2. 避免不必要的属性查找3. 使用快速的JavaScript方法4. 避免不必要的DOM操作5. 使用Web Workers进行后台处理总结 性能优化是任何编程语言的重要组成部分&#xff0c;JavaScript也不例外。在这个章节中&#xff0c;我们将探讨如何优化JavaScript代码&…

【JavaEE】Java中的多线程 (Thread类)

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

c语言,输入整数n(行数,本例为4),按照如下规则打印数字图片 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16

c语言&#xff0c;输入整数n(行数&#xff0c;本例为4&#xff09;&#xff0c;按照如下规则打印数字图片 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 以下是使用C语言编写的程序&#xff0c;根据输入的行数打印数字图片的规则&#xff1a; #include <stdio.h>int main() …