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

装修网站应该怎么做网站建设方案书

装修网站应该怎么做,网站建设方案书,做婚纱摄影网站多少钱,辽宁省住房和城乡建设厅网站上不去LC1793. 好子数组的最大分数 题目描述 给你一个整数数组 nums &#xff08;下标从 0 开始&#xff09;和一个整数 k 。 一个子数组 (i, j) 的 分数 定义为 min(nums[i], nums[i1], ..., nums[j]) * (j - i 1) 。 一个 好 子数组的两个端点下标需要满足 i < k < j 。 请…

LC1793. 好子数组的最大分数

题目描述

给你一个整数数组 nums (下标从 0 开始)和一个整数 k 。
一个子数组 (i, j) 的 分数 定义为 min(nums[i], nums[i+1], ..., nums[j]) * (j - i + 1) 。
一个 好 子数组的两个端点下标需要满足 i <= k <= j 。
请你返回 好 子数组的最大可能 分数 。
1 <= nums.length <= 10^5
1 <= nums[i] <= 2 * 10^4

分析

数据要求非常高,n是1e5级别的,也就是O(n^3)、O(n^2)时间复杂度的算法都无法AC,所以正解只有O(n)或者O(n logn)的算法才能通过。本题正解是O(n)

暴力解法1:纯蛮力

三重循环,枚举i,再枚举j,再枚举i~j求出最小值

时间复杂度O(n^3)

for i in range(n):for j in range(i,n):mi = inffor k in range(i,j+1):mi = min(mi,nums[k])ans = max(ans,mi*(j-i+1))

这个暴力解法可以优化成O(n^2),就是先预处理出来mi[i][j],表示i~j的最小值。但是时间还是不满足题意

暴力解法2:贡献思维

枚举nums[i],找到当nums[i]是好子数组最小值时的最大区间。
即找到左边和右边离i最近的比它小的元素,就是边界,从而确定以nums[i]为最小值的子数组的范围
时间复杂度O(n^2)

for i in range(n):# 找左边离i最近的比它小的元素j = iwhile j>=0 and nums[j]>=nums[i]:j -= 1l = j# 找右边离i最近的比它小的元素j = iwhile j<n and nums[j]>=nums[i]:j += 1r = jif l<k and r>k:res = (r-l-1)*nums[i]ans = max(ans,res)

正确解法

想一下暴力解法2有什么可以优化的地方呢?
其实在求左边(右边)离i最近的比它小的元素这个地方是O(n)的,其实可以用单调栈将这个操作优化成O(1)的。

为了解决这个问题,我们可以采用单调栈的方法来找到每个元素左边和右边第一个比它小的元素的位置。这是因为对于任意的元素nums[i],我们想要知道在其左边和右边第一个比它小的元素,从而确定以nums[i]为最小值的子数组的范围
核心思路:枚举每一个Nums[i]作为最小值的好子数组的最大分数。

时间复杂度O(n)

AC 代码

class Solution:def maximumScore(self, nums: List[int], k: int) -> int:n = len(nums)# 单调栈,找到i左边/右边离他最近的比它小的数# l[i]表示nums[i]左边第一个比它小的元素的下标 l = [-1]*n# r[i]表示nums[i]右边第一个比它小的元素的下标  r = [n]*n# 使用单调栈计算l数组stk = []for i in range(n):while len(stk) and nums[stk[-1]] >= nums[i]:stk.pop()l[i] = stk[-1] if len(stk) else -1stk.append(i)stk = []for i in range(n-1,-1,-1):while len(stk) and nums[stk[-1]] >= nums[i]:stk.pop()r[i] = stk[-1] if len(stk) else nstk.append(i)ans = 0for i in range(n):if l[i]<k and r[i]>k:res = (r[i]-l[i]-1)*nums[i]ans = max(ans,res)return ans
http://www.mmbaike.com/news/40257.html

相关文章:

  • 铜仁北京网站建设百度seo排名培训 优化
  • 上海市政府网站建设与对策分析什么是口碑营销
  • 抖音代运营推广网站搜索排名优化价格
  • 西安响应式网站建设公司发布平台
  • 桂市做网站的朋友东莞网站建设seo
  • 建设工业网站seo推广技巧
  • 怎样注册网站免费的网络营销电子版教材
  • 网站建设怎么付费肇庆seo排名
  • 北京网站手机站建设公司电话搜索引擎优化关键字
  • 怎么做导购网站seo规范培训
  • 9e做网站seo网络优化
  • 南京网站开发联系南京乐识宁波正规优化seo价格
  • 北京软件开发学校哪个好济南做seo排名
  • 用什么工具建设网站山西网站seo
  • 如何用word做网站地图济南百度开户电话
  • 网站检索功能怎么做企业建站要多少钱
  • 电子书推送网站怎么做疫情最新数据
  • 网站推广建站设计外包网站
  • 一分钟做网站拼多多关键词优化步骤
  • 远程医疗型网站开发全球网站排名查询
  • 网站商城系统建设英文关键词seo
  • wordpress博客主题修改seo技术交流论坛
  • 陕西省建设厅人力资源网站seo助手
  • 一个网站需要多少网页宁波seo服务推广
  • 湖南省政府 网站建设最好的网站推广软件
  • 网站开发与设计培训营销模式
  • 章丘做网站单位哪家好seo目标关键词优化
  • 基于个性化推荐的电商网站设计与实现乐云seo官网
  • 编辑网站内容有没有批量办法做seo推广一年大概的费用
  • 中国移动网站学管理培训班去哪里学