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

leetcode 2799. 统计完全子数组的数目 中等

给你一个由  整数组成的数组 nums 。

如果数组中的某个子数组满足下述条件,则称之为 完全子数组 :

  • 子数组中 不同 元素的数目等于整个数组不同元素的数目。

返回数组中 完全子数组 的数目。

子数组 是数组中的一个连续非空序列。

示例 1:

输入:nums = [1,3,1,2,2]
输出:4
解释:完全子数组有:[1,3,1,2]、[1,3,1,2,2]、[3,1,2] 和 [3,1,2,2] 。

示例 2:

输入:nums = [5,5,5,5]
输出:10
解释:数组仅由整数 5 组成,所以任意子数组都满足完全子数组的条件。子数组的总数为 10 。

提示:

  • 1 <= nums.length <= 1000
  • 1 <= nums[i] <= 2000

分析:使用滑动窗口来解决这个问题。用一个 flag 数组,记录对应的元素是否出现过,并用 cnt 记录出现过不同的元素数量。之后遍历数组,用 temp 数组记录已经出现过哪些元素,每出现过一个元素, cnt 的值减 1。

初始时,窗口的左端点 L = 0。当 cnt 等于 0 时,说明从 L 到当前位置 index 的子数组是完全子数组,且从 index 到 nums 数组末尾的所有子数组也都满足完全子数组的条件,因此 ans += numsSize - index。之后要将窗口的左端点 L 向右移动,直到从 L 到 index 的子数组不满足条件。每次移动时,若仍然满足条件,ans 还要加上 numsSize - index。这样遍历完整个数组即可得到答案。

int countCompleteSubarrays(int* nums, int numsSize) {int ans,l,r,cnt;cnt=ans=l=r=0;int flag[2020]={0},temp[2020]={0};for(int i=0;i<numsSize;++i)if(!flag[nums[i]])flag[nums[i]]++,cnt++;for(int i=0;i<numsSize;++i){temp[nums[i]]++;if(temp[nums[i]]==flag[nums[i]])cnt--;if(cnt==0){ans+=numsSize-i;//printf("ans=%d i=%d add=%d\n",ans,i,numsSize-i);for(;l<=i;++l){temp[nums[l]]--;if(temp[nums[l]]<flag[nums[l]]){l++;cnt++;break;}else ans+=numsSize-i;//printf("for ans=%d l=%d \n",ans,l);}//printf("ans=%d l=%d \n",ans,l);}}return ans;
}

相关文章:

  • 玩转Docker | Docker部署LMS轻量级音乐工具
  • 加深对vector理解OJ题
  • MQTT 之 EMQX
  • pnpm install报错:此系统上禁止运行脚本
  • 电竞俱乐部护航点单小程序,和平地铁俱乐部点单系统,三角洲护航小程序,暗区突围俱乐部小程序
  • 1.7软考系统架构设计师:系统架构设计师概述 - 超简记忆要点、知识体系全解、考点深度解析、真题训练附答案及解析
  • 【LLM+Code】Github Copilot Agent/VsCode Agent 模式PromptTools详细解读
  • windows系统自定义powshell批处理脚本
  • AOSP CachedAppOptimizer 冻结方案
  • 哑光蓝色调风光人像Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 部署本地知识库,怎么选择 vllm 和 langchain_ollama
  • MATLAB 中的图形绘制
  • Cadence 建立复合原理图封装时怎么切换页面
  • Django创建的应用目录详细解释以及如何操作数据库自动创建表
  • JavaScript 中的尾递归:优点与应用场景
  • Trae+DeepSeek学习Python开发MVC框架程序笔记(四):使用sqlite验收用户名和密码
  • VIC-3D非接触全场应变测量系统用于小尺寸测量之电子元器件篇—研索仪器DIC数字图像相关技术
  • containerd 配置代理
  • 如何在 Dialog 中安全初始化 ECharts 并自动监听容器大小变化
  • 优选算法第十讲:字符串
  • 期待会师!神二十与空间站完成对接
  • 夜读丨修车与“不凑合”
  • 习近平举行仪式欢迎肯尼亚总统鲁托访华
  • 河南省鹤壁市人大常委会副主任李杰接受审查调查
  • 融入长三角一体化发展,苏南名城镇江的优势和机遇何在
  • 央行副行长:上海国际金融中心建设是我国参与国际金融竞争的核心载体