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

992. K 个不同整数的子数组

目录

  • 一、题目
  • 二、思路
    • 2.1 解题思路
    • 2.2 代码尝试
    • 2.3 疑难问题
  • 三、解法
  • 四、收获
    • 4.1 心得
    • 4.2 举一反三

一、题目

在这里插入图片描述

二、思路

2.1 解题思路

2.2 代码尝试

class Solution {
public:
    int subarraysWithKDistinct(vector<int>& nums, int k) {
        //需要有数据结构来存储数组统计情况,还是采用哈希表

        unordered_map<int,int> map;
        int ret=0;
        int l=0,r=0;
        while(r<nums.size()){
            //窗口先伸展到最大
            map[nums[r]]++;
            ret+=cnt?=r-l+1<k0:
            while(map.size()>k){

                if(map[nums[l]]!=0){
                    map[nums[l]]--;
                }else{
                    map.erase[nums[l]];
                }
                l++;
            }


        }


        return ret;
    }
};

2.3 疑难问题

三、解法

class Solution {
public:
    int subarraysWithKDistinct(vector<int>& nums, int k) {
        int n = nums.size();
        vector<int> num1(n + 1), num2(n + 1);
        int tot1 = 0, tot2 = 0;
        int left1 = 0, left2 = 0, right = 0;
        int ret = 0;
        while (right < n) {
            if (!num1[nums[right]]) {
                tot1++;
            }
            num1[nums[right]]++;
            if (!num2[nums[right]]) {
                tot2++;
            }
            num2[nums[right]]++;
            while (tot1 > k) {
                num1[nums[left1]]--;
                if (!num1[nums[left1]]) {
                    tot1--;
                }
                left1++;
            }
            while (tot2 > k - 1) {
                num2[nums[left2]]--;
                if (!num2[nums[left2]]) {
                    tot2--;
                }
                left2++;
            }
            ret += left2 - left1;
            right++;
        }
        return ret;
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/subarrays-with-k-different-integers/solutions/598045/k-ge-bu-tong-zheng-shu-de-zi-shu-zu-by-l-9ylo/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

四、收获

4.1 心得

4.2 举一反三

count(k)-count(k-1)的思想

相关文章:

  • nginx+keepalived实现高可用负载均衡
  • Python中文自然语言处理库SnowNLP
  • 建筑兔零基础人工智能自学记录34|深度学习与神经网络2
  • 【单点登录】SSO单点登录sa-token接入流程详解
  • Linux服务器Ubuntu系统环境中安装Jupyter Notebook并且配置内核以便在网页端调用
  • TCP通讯与基于C#TCP通讯,跨窗收发消息Demo
  • JavaScript 内存管理:利用数据结构优化内存使用
  • Linux系统中proc是做什么的?
  • MySQL索引深度剖析:从数据结构到实际应用
  • 【MySQL篇】数据类型
  • 01 计算机系统层次结构和冯·诺依曼计算机
  • thinkphp think-captcha 前后端分离 图形验证码
  • 兴起的Spring Ai框架【详解 搭建Spring Ai项目,以及简单的ai大模型智能体应用,附有图文+示例代码】
  • 前缀和与差分算法
  • DeepSeek 1.5B蒸馏模型的J6部署(Llama方式)
  • 【QGIS二次开发】
  • C# 牵手DeepSeek:打造本地AI超能力
  • Hue Load Balance配置
  • Flutter 学习之旅 之 flutter 使用 fluttertoast 的 toast 实现简单的 Toast 效果
  • Word快速替换修改学术论文所有中的中括号引用未上标格式
  • wordpress mx主题VIP/小璇seo优化网站
  • 门户网站盈利/营销型企业网站有哪些
  • 网站用什么语言好/个人网站设计
  • 基于jsp的电商网站开发/网站查询站长工具
  • 建筑毕业设计代做网站/seo主要做哪些工作
  • 深圳网站设计公司哪家工艺好/博客网