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

模板网站外链做不起来新民电商网站建设价格咨询

模板网站外链做不起来,新民电商网站建设价格咨询,招标网免费,百度云 网站备案2865. 美丽塔 I 难度 : 中等 题目大意 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i &#xff0c;高度为 heights[i] 。 如果以下条件满足&#xff0c;我们称这些塔是 美丽 的&#xff1a; 1 < heights…

2865. 美丽塔 I

难度 : 中等

题目大意

给你一个长度为 n 下标从 0 开始的整数数组 maxHeights

你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i]

如果以下条件满足,我们称这些塔是 美丽 的:

  1. 1 <= heights[i] <= maxHeights[i]
  2. heights 是一个 山脉 数组。

如果存在下标 i 满足以下条件,那么我们称数组 heights 是一个 山脉 数组:

  • 对于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j]
  • 对于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k]

请你返回满足 美丽塔 要求的方案中,高度和的最大值

提示:

  • 1 <= n == maxHeights <= 10^3
  • 1 <= maxHeights[i] <= 10^9

示例 1:

输入:maxHeights = [5,3,4,1,1]
输出:13
解释:和最大的美丽塔方案为 heights = [5,3,3,1,1] ,这是一个美丽塔方案,因为:
- 1 <= heights[i] <= maxHeights[i]  
- heights 是个山脉数组,峰值在 i = 0 处。
13 是所有美丽塔方案中的最大高度和。

分析

根据数据范围可以知道时间复杂度要控制在 O ( n 2 l o g n ) O(n^2logn) O(n2logn),首先我们要确定这个山脉的中心,也就是说我们可以枚举这个中心,然后去构造这个山脉数组,至于怎么构造,因为确定了中心,所以我们可以枚举左右两边,以左边为例,我们要所得的山脉的高度之和最大,所以我们要尽可能取到最大的山脉高度,也就是说,如果当前山脉的最大高度小于等于右边山脉的高度,我们就可以直接取最大的高度,如果比右边的高度高,那么就只能取和右边的山脉相同的高度,右边是同理的,注意数据范围可能爆int,所以注意开long long

暴力枚举

class Solution {
public:using LL = long long;long long maximumSumOfHeights(vector<int>& maxHeights) {int n = maxHeights.size();LL res = 0;for (int i = 0; i < n; i ++){LL sum = maxHeights[i];LL t = maxHeights[i];// 用t表示当前山脉的限制高度for (int j = i - 1; j >= 0; j --)if (maxHeights[j] <= t) sum += maxHeights[j], t = maxHeights[j];else sum += t;t = maxHeights[i];for (int j = i + 1; j < n; j ++)if (maxHeights[j] <= t) sum += maxHeights[j], t = maxHeights[j];else sum += t;res = max(res, sum);}return res;}
};

时间复杂度 O ( n 2 ) O(n^2) O(n2)

分析

我们确定山峰之后,分析左边,从山峰往左看,根据上面的暴力做法的提示,我们发现,假设当前的山峰maxHeightx,那么如果左边的山脉是高于x的,左边的山脉就会受到限制,那么这个限制什么时候解除呢,碰到一个比x还要小的山脉,而且是第一个,那么我们就可以联想到单调栈的思想,我们可以存下标,我们首先找到受x限制的那一段,终点下标就是栈顶假设是t,那么这一段全部都是x高度,我们定义l[i]表示当前位置为山峰,从i往左看非递增的山脉的高度值和,假设l[i] = l[t] + (i - t) * x(下标从1开始),考虑边界情况,如果左边没有比x小的,那么左边都要受到限制,所以我们可以将栈底始终放一个下标0,这样就方便处理,至于右边的情况,是一样的,我们可以将数组反转一下,然后就是相同的处理

单调栈

class Solution {
public:using LL = long long;long long maximumSumOfHeights(vector<int>& maxHeights) {int n = maxHeights.size();vector<LL> l(n + 1), r(n + 1); // 下标从1开始方便处理边界auto f = [&](vector<LL>& g) {stack<LL> stk;stk.push(0); // 方便处理边界for (int i = 1; i <= n; i ++ ) {while (stk.size() > 1 && maxHeights[stk.top() - 1] >= maxHeights[i - 1]) stk.pop();g[i] = g[stk.top()] + (LL)(i - stk.top()) * maxHeights[i - 1];stk.push(i);}};f(l), reverse(maxHeights.begin(), maxHeights.end()), f(r);LL res = 0;for (int i = 1; i <= n; i ++) {res = max(res, l[i] + r[n - i + 1] - maxHeights[n - i]); // 注意此时数组已经反转了,所以下标要注意}return res;}
};

时间复杂度: O ( n ) O(n) O(n)

结束了

http://www.yayakq.cn/news/773988/

相关文章:

  • cms系统和网站后台系统台州网站建设惠店科技
  • 营口企业网站建设ppt里做网站效果
  • 企业建设网站的案例北京房产网官网
  • 网页主题设计思路及制作步骤佛山网站设计优化公司
  • 昆明如何做百度的网站郑州郑好办app
  • 文字直播网站怎么做的酒泉网站建设优化
  • 做网站的问题免费网站建设是什么
  • 建设公司网站标题wordpress id从1开始
  • 广州网站建设正怎样用ps做网站的效果图
  • 咸宁网站建设哪家专业抖音代运营包含哪些服务
  • 南通wap网站建设html5制作网页的代码
  • 怎么看一个网站谁做的优化优化网站排名需要多少钱
  • 网站建设哪里最便宜赞友商城电商平台排名第几
  • 有什么网站开发软件一般做网站是用什么程序做的
  • 12306网站能不能用银河二计算机做服务器啊慢得要死国外人像摄影网站
  • 网站如何做超级链接网站空间管理平台
  • 三网合一网站建设报价1m的带宽做网站可以吗
  • 做p2p网站 人员配置网站建设公司专业公司
  • 做系统哪个网站好聚美优品网站开发时间进度表
  • 互联网网站建设wordpress term函数
  • 如何策划网站常州网络公司鼎豪网络网站建设
  • 加拿大pc网站搭建网线制作注意事项
  • 汉中做网站公司wordpress简单个人主题
  • 小型网站开发语言做网站维护需要什么证书
  • wordpress自建电商网站美工培训
  • 国产网站开发工具公司免费的logo网站
  • 在阿里云备案网站通过广州生物科技网站建设公司
  • 做翻译网站 知乎做网站帮京东卖东西怎么合作
  • 门户网站建设的请示微信公众号内置手机网站
  • 建设一个网站需要哪些材料电商app开发哪家公司最好