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

济南槐荫网站开发公司奉化网站关键词优化费用

济南槐荫网站开发公司,奉化网站关键词优化费用,深圳网站建设外包公司,增城线上教学题目要求 给定一个整数数组 arr,求 min(b) 的总和,其中 b 的范围涵盖 arr 的每个(连续)子数组。由于答案可能很大,因此返回答案模数 Example 1: Input: arr [3,1,2,4] Output: 17 Explanation: Subarrays are [3]…

题目要求

给定一个整数数组 arr,求 min(b) 的总和,其中 b 的范围涵盖 arr 的每个(连续)子数组。由于答案可能很大,因此返回答案模数10^9+7

Example 1:

Input: arr = [3,1,2,4]
Output: 17
Explanation: 
Subarrays are [3], [1], [2], [4], [3,1], [1,2], [2,4], [3,1,2], [1,2,4], [3,1,2,4]. 
Minimums are 3, 1, 2, 4, 1, 1, 2, 1, 1, 1.
Sum is 17.

Example 2:

Input: arr = [11,81,94,43,3]
Output: 444

思路

找出数组的全部组合数,加和并返回mod(10^9+7)之后的结果。我们只需要找出所有的组合然后加到一起。但是这样至少需要O(N^2)的时间复杂度,会超时。

然后又想到不需要真正求出子数组,只需要求出子数组的最小值即可。同时发现子数组不能交换顺序。因此想到用单调栈解决本题。

  1. 左侧范围:我们需要找出在 arr[i] 左侧的第一个比 arr[i] 小的元素。设这个位置为 L。这意味着从 L+1i 的所有位置,arr[i] 都是最小的。

  2. 右侧范围:类似地,我们找出在 arr[i] 右侧的第一个比 arr[i] 小的元素。设这个位置为 R。这意味着从 iR-1 的所有位置,arr[i] 都是最小的。

知道这两个位置后,我们可以计算以 arr[i] 为最小值的子数组数量。这个数量等于 arr[i] 左侧和右侧可扩展的位置数的乘积。

特别注意:处理数值相同时的情况。只需要在处理左边界或者有边界时候加入一个等号即可。(始终认为出现相同值时,右边的更小)。

代码

class Solution {
public:int sumSubarrayMins(vector<int>& arr) {stack<int> s;int result = 0;int n = arr.size();vector<int> left(n), right(n);long long mod = 1000000007; // 10^9 + 7for (int i = 0; i < n; ++i) {while (!s.empty() && arr[s.top()] >= arr[i]) {right[s.top()] = i;s.pop();}s.push(i);}while (!s.empty()) {right[s.top()] = n;s.pop();}for (int j = n-1; j >= 0; --j) {while (!s.empty() && arr[s.top()] > arr[j]) {left[s.top()] = j;s.pop();}s.push(j);}while (!s.empty()) {left[s.top()] = -1;s.pop();}for (int i = 0; i < n; ++i) {cout << i << " " << left[i] << " " << right[i] << " " << arr[i] << endl;result += ((long long)(i - left[i]) * (right[i] - i) % mod * arr[i] % mod) % mod;result %= mod;}return result;}
};

特别感谢GPT的Code Tutor,这个题目的思路和代码是在它的指导下写出来的,还挺好用的。

时空复杂度

http://www.tj-hxxt.cn/news/107924.html

相关文章:

  • 制作网站公司 可以要求后续修改吗推广普通话的意义
  • 网站维护更新搜索排名广告营销
  • 农村小学校园网站建设方案sem培训学校
  • 怎么做动态网站的数据库推广员是干什么的
  • 广东做网站的公司网络营销的核心
  • 如何在电网网站做备案免费网站生成器
  • 苏州网网站建设谷歌代理
  • 做音乐网站曲库在哪找关键词查询爱站网
  • 网站设计 联系12345浏览器
  • 外贸网站建设是什么百度2022第三季度财报
  • 定制做网站费用如何快速推广网站
  • 江西城乡建设培训中心网站关键词长尾词优化
  • 怎样免费做网站网络营销课程作业
  • php做的汽车销售网站seo优化软件免费
  • 网站的界面设计企业怎么做好网站优化
  • 做水果网站特点分析手机优化大师官方免费下载
  • 网站建设公司怎么赚钱seo薪酬水平
  • 少儿编程加盟学校广州网站优化公司
  • 网站改版设计注意事项黑帽seo什么意思
  • 番禺有经验的网站建设宁波网站推广制作
  • 网站制作开发东莞seo优化seo关键词
  • 红色企业网站源码杭州seo营销
  • 网站建设怎么做关键词生成器在线
  • c 做商务网站方便吗开封网站快速排名优化
  • 网络推广产品东莞市网络seo推广价格
  • 北京网站建设批发深圳龙华区大浪社区
  • 注册网站的流程我想学做互联网怎么入手
  • 青岛商务学校网站建设国家市场监督管理总局官网
  • 瑶海区网站建设找个免费网站这么难吗
  • 烟台网站建设技术托管新闻10条摘抄大全