开发者社区> 问答> 正文

遇到一个超级区间问题,求解答。

Tom 现在有一个长度为 n 的数组,Jerry 给 Tom 定义了一种超级区间,如果区间 [l,r] 满足 (a[l]+…+a[r])>=k, 则区间 [l,r] 被称为超级区间,现在 Jerry 想让 Tom 告诉他数组中有多少个超级区间。输入整数 n, 整数 k(1<=n,k<=100000),和一个大小为 n 的数组,数组的每个元素的大小都在 [1,1000] 之间。输出输入数组的超级区间的个数。

展开
收起
游客4skzfvnrxrzbi 2021-12-23 16:52:28 556 0
1 条回答
写回答
取消 提交回答
  • 1.初始 L=R=0;sum=0;用来计算满足条件的区间个数 2.判断区间[L, R]的情况,满足情况1,则 sum++; R++。满足情况 2,L++。满足情况 3,结束计算。对于情况1,因为L不变时,后面的所有R都满足条件,所以可以修改为sum+=n-R+1;L++。 输入:3 5 [2,3,5] 输出:4 注:样例满足条件的超级区间为[1,2],[2,3],[1,3],[3,3]。

    2021-12-23 18:44:21
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载