力扣(LeetCode)795. 区间子数组个数(C++)

news2024/9/20 15:03:43

模拟

有一种构想,只考虑上边界,在小边界和大边界之间的连续子数组个数 = = =小于等于大边界的连续子数组个数 − - 小于小边界的连续子数组个数。

连续子数组个数计算公式 s u m = n × ( n + 1 ) 2 sum = \dfrac{n\times (n+1)}{2} sum=2n×(n+1)
长度为 n n n 的小于某上界的区间,我们可以从中取 n / ( n − 1 ) / ( n − 2 ) … / 2 / 1 n/(n-1)/(n-2)\dots/2/1 n/(n1)/(n2)/2/1 个数,构成连续子数组,分别有 1 / 2 / 3 … / ( n − 1 ) / n 1/2/3\dots/(n-1)/n 1/2/3/(n1)/n 个数组,总共 n × ( n + 1 ) 2 \dfrac{n\times (n+1)}{2} 2n×(n+1) 个连续子数组。

统计 n u m s nums nums 所有区间,分别求出连续子数组个数, a n s = ∑ s u m ans = \sum sum ans=sum 就是 n u m s nums nums 内所有连续子数组个数。

提示 : 文中所有公式成立的前提是只考虑小于某边界。

C++

class Solution {
public:
    int calc(vector<int> &nums,int k){
        int ans = 0;
        for(int i= 0;i<nums.size();i++){
            if(nums[i]>k) continue;
            int j = i+ 1;
            while(j<nums.size()&&nums[j]<=k) j++;
            ans += (long long)(j-i)*(j-i+1)/2;
            i = j;
        }
        return ans;
    }
    int numSubarrayBoundedMax(vector<int>& nums, int left, int right) {
        return calc(nums,right) - calc(nums,left -1);
    }
};

时间复杂度 O ( n ) O(n) O(n) : 一次遍历 n u m s nums nums 即可求出小于某边界的连续子数组个数,遍历较大边界和较小边界的总时间复杂度 O ( 2 × n ) O(2\times n) O(2×n) ,忽略常数时间复杂度 O ( n ) O(n) O(n)

空间复杂度 O ( 1 ) O(1) O(1) : 只用到常量级空间。

致语

理解思路很重要!
欢迎读者在评论区留言,答主看到就会回复的。

AC

AC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UML建模

UML定义了行为图&#xff08;动态&#xff09;和状态图&#xff08;静态&#xff09;两大类。&#xff08;分类依据&#xff1a;对象是否根据时间变化&#xff09; 下面简介一下用例图、类图、时序图和状态图的概念。 “41”视图模型 逻辑视图&#xff1a;逻辑试图主要是用来…

CV攻城狮入门VIT(vision transformer)之旅——近年超火的Transformer你再不了解就晚了!

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

PowerJob 定时从SFTP下载文件踩的坑

一. 业务需求 SFTP上有多个目录, 每小时要下载一次文件, 每个目录的下载任务都是一个独立的工作流任务. 二.问题描述 手动执行每个任务可以正常执行, 但是当所有任务都开启定定时任务执行时(每小时执行一次),任务实例就会报错. 三.问题分析 查看服务端和worker端的日志, …

【ML特征工程】第 2 章 :简单数字的花式技巧

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

PDF怎么转换成Word?给大家分享三种简单的转换方法

我们怎么把拿到手的PDF文件转换成Word文档格式呢&#xff1f;众所周知&#xff0c;PDF文件虽然没有办法能够直接在文件上进行编辑&#xff0c;但是我们可以借助一些编辑软件来实现这一操作&#xff0c;尽管这样还是会有很多小伙伴习惯在Word中来编辑文件内容&#xff0c;因此怎…

EasyRecovery2023重新找回丢失的文件数据恢复软件

Ontrack EasyRecovery2023易恢复一款数据文件恢复软件&#xff0c;号称最好的数据恢复软件&#xff01;可以全面恢复删除丢失数据&#xff0c;能对电脑误删文件恢复&#xff0c;格式化硬盘数据恢复&#xff0c;手机U盘数据恢复等等&#xff0c;威力非常的强大&#xff01;支持恢…

运动耳机怎么选,盘点目前适合运动的几款耳机

​相对于传统耳机而言&#xff0c;现如今越来越多的人喜欢使用骨传导耳机&#xff0c;毕竟无需入耳不管是在运动还是日常&#xff0c;防丢能力会更加好&#xff0c;耳挂式的佩戴更加不用担心在剧烈运动的情况下脱落&#xff0c;但在骨传导耳机中已经有了很多个品牌入驻&#xf…

先聊聊「堆栈」,再聊聊「逃逸分析」。Let’s Go!

要搞清楚GO的逃逸分析一定要先搞清楚内存分配和堆栈&#xff1a; 内存分配既可以分配到堆中&#xff0c;也可以分配到栈中。 什么样的数据会被分配到栈中&#xff0c;什么样的数据又会被分配到堆中呢&#xff1f; GO语言是如何进行内存分配的呢&#xff1f;其设计初衷和实现原…

云原生丨5大Datadog集成,快速提高团队效率!

Datadog是DevOps、开发人员和 SRE 团队的必备好物&#xff0c;它适用于各种规模的云应用程序。 然而&#xff0c;尽管 Datadog 功能十分强大&#xff0c;但大多数企业并没有充分发挥 Datadog 全部价值。 什么是 Datadog Datadog 是一个可观察性平台&#xff0c;提供监控、安…

3.1、数据链路层概述

3.1、数据链路层概述 3.1.1、数据链路层在网络体系结构中所处的地位 如下所示&#xff0c;主机 H1 给主机 H2 发送数据&#xff0c;中间要经过三个路由器和电话网、局域网以及广域网等多种网络 从五层协议原理体系结构的角度来看&#xff1a; 主机应具有体系结构中的各个层…

使用HTML制作静态网站:传统文化戏剧锡剧带psd设计图(2个页面)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【项目_01】搭建项目基本框架、底部tabbar、头部banner | 旅途拾景 | 基于Vue3全家桶

&#x1f4ad;&#x1f4ad; ✨&#xff1a;搭建项目基本框架、底部tabbar、头部banner| 路途拾景 | 基于Vue3全家桶   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: 因为很多东西来不及去做去看可是时间很快总是赶不上&#xff0c;所以要去成长呀&#x1f4…

作业-11.23

1、广播 接收端 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <stdlib.h> #include <netinet/in.h> #include <netinet/ip.h> #include <arpa/inet.h> #include <unistd.h> #include <str…

Diffusion Autoencoders: Toward a Meaningful and Decodable Representation

​ Diffusion Autoencoders: Toward a Meaningful and Decodable Representation 扩散自编码器:面向有意义和可解码的表示 code&#xff1a;https://github.com/phizaz/diffae A CVPR 2022 (ORAL) paper (paper, site, 5-min video) Diffusion probabilistic models (DPMs) hav…

算法设计与分析 SCAU17089 最大m子段和

17089 最大m子段和 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC;JAVA Description “最大m子段和”问题&#xff1a;给定由n个整数&#xff08;可能为负&#xff09;组成的序列a1、a2、a3、…、an&#xff0c;以及一个正整数m&a…

【Java】初识IO流【附导航】

文章目录01 什么是IO02 数据源03 什么是流04 IO流原理⇩➩ 导航01 什么是IO 对于任何程序设计语言而言&#xff0c;输入输出&#xff08;Input / Output&#xff09;系统都是非常核心的功能。程序运行需要数据&#xff0c;数据的获取往往需要跟系统外部进行通信&#xff0c;外部…

论文复现|Panoptic Deeplab(全景分割PyTorch)

摘要&#xff1a;这是发表于CVPR 2020的一篇论文的复现模型。本文分享自华为云社区《Panoptic Deeplab(全景分割PyTorch)》&#xff0c;作者&#xff1a;HWCloudAI 。 这是发表于CVPR 2020的一篇论文的复现模型&#xff0c;B. Cheng et al, “Panoptic-DeepLab: A Simple, Str…

63. 不同路径 II

题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到…

MySQL主/从-主/主集群安装部署

MySQL集群架构的介绍 我们在使用到MySQL数据库的时候&#xff0c;只是一个单机的数据库服务。在实际的生产环境中&#xff0c;数据量可能会非常庞大&#xff0c;这样单机服务的MySQL在使用的时候&#xff0c;性能会受到影响影响。并且单机服务的MySQL的数据安全性也会受到影响…

数字信号处理-09-串行FIR滤波器MATLAB与FPGA实现

前言 本文介绍了设计滤波器的FPGA实现步骤&#xff0c;并结合杜勇老师的书籍中的串行FIR滤波器部分进行一步步实现硬件设计&#xff0c;对书中的架构做了简单的优化&#xff0c;并进行了仿真验证。 FIR滤波器的FPGA实现步骤 从工程角度分析FIR滤波器的FPGA实现步骤如下&…