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

Leetcode 3748. Count Stable Subarrays

  • Leetcode 3748. Count Stable Subarrays
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3748. Count Stable Subarrays

1. 解题思路

这一题是Leetcode周赛476的第四题,是一道hard的题目。

这一题其实我自己没算是做出来,看了大佬的解答之后弄出来的,整体思路就是现在原始数组上面找出所有的非递减数组,然后顺序进行整理,然后每一段子数组所能够构成的所有subarray的数目就是m(m+1)2\frac{m(m+1)}{2}2m(m+1),其中mmm为当前这段子数组的长度。

此时,我们就能够构造一个前序和数组,来计算从前往后所有区间内的有效subarray的数目。

最后,对于每一个query,我们只需要考察其区间内包含多少个上述subarray,然后将这一段subarray当中构成的stable subarray加总返回即可。

唯一需要注意的是,对于最左和最后的两端区间,很可能会破坏原始数组的group当中的开头和结尾的位置,因此我们需要单独重新计算一下开头和结尾的两个区间上的stable subarray的个数。

2. 代码实现

给出python代码实现如下:

class Solution:def countStableSubarrays(self, nums: List[int], queries: List[List[int]]) -> List[int]:pre, idx, n = 0, 1, len(nums)groups, s = [], []while idx < n:if nums[idx] < nums[idx-1]:m = idx-pregroups.append([pre, idx-1])s.append(m*(m+1)//2)pre = idxidx += 1m = n-pregroups.append([pre, n-1])s.append(m*(m+1)//2)prefix = list(accumulate(s, initial=0))def query(l, r):lb = bisect.bisect_right(groups, [l, n])-1rb = bisect.bisect_right(groups, [r, n])-1if lb >= rb:return (r-l+1) * (r-l+2)//2mid = prefix[rb] - prefix[lb+1]left = groups[lb][1] - l + 1right = r - groups[rb][0] + 1return mid + left * (left+1) // 2 + right * (right+1)//2return [query(l, r) for l, r in queries]

提交代码评测得到:耗时436ms,占用内存52.62MB。

http://www.dtcms.com/a/619004.html

相关文章:

  • LeetCode Hot100 缺失的第一个正数
  • skywalking中TID
  • 设计公司展厅装修长沙网站搭建seo
  • 私有化部署的gitlab的push failed问题,使用http远程连接(使用token或用户、密码)
  • 人工智能技术- 语音语言- 01 语音识别与合成
  • 枣庄企业网站推广用什么软件做网站hao
  • 网站类型分析招投标网站开发费用
  • 【C语言预处理器全解析】宏、条件编译、字符串化、拼接
  • 生物信息学核心算法全解析:从序列比对到 AI 预测的技术全景
  • 好的网站设计特点北京网站建设公司兴田德润活动
  • 第七章 构建你的智能体框架
  • flash类网站开发石家庄装修设计公司
  • 企业网站推广属于付费推广吗网站用cms
  • 嵌入式面试题:CAN 与 I2C 核心对比(含优缺点,实操视角)
  • 商河县做网站公司网络营销师资格证有什么用
  • 揭阳市住房和城乡建设局官方网站一天必赚100元的游戏
  • Python 常用库
  • 【 Java八股文面试 | Java集合 】
  • 青岛网站优化公司哪家好建网站 找个人
  • 网站建设售后服务网站推广排名
  • 线程控制块 (TCB) 与线程内核栈的内存布局关系
  • 现在最常用网站开发工具建设公司网站开发方案
  • 长春专业做网站公司排名discuz集成wordpress
  • 独立开发者的本质
  • 从“高密度占有”到“点状渗透”:论“开源AI智能名片链动2+1模式”在S2B2C商城小程序中的渠道革新
  • Goer-Docker系列-1-容器编排实操
  • 4.1 Agent开发热潮!基于LLM构建智能代理系统,未来人机交互的新范式
  • 设计模式实战篇(七):适配器模式 —— 让“不兼容的接口”优雅合作的万能转换器
  • 【Java 基础】5 面向对象 - 实体类
  • 波哥昆明网站建设平面设计的素材网站