zoukankan      html  css  js  c++  java
  • 992. Subarrays with K Different Integers

    Given an array A of positive integers, call a (contiguous, not necessarily distinct) subarray of A good if the number of different integers in that subarray is exactly K.

    (For example, [1,2,3,1,2] has 3 different integers: 12, and 3.)

    Return the number of good subarrays of A.

    Example 1:

    Input: A = [1,2,1,2,3], K = 2
    Output: 7
    Explanation: Subarrays formed with exactly 2 different integers: [1,2], [2,1], [1,2], [2,3], [1,2,1], [2,1,2], [1,2,1,2].
    

    Example 2:

    Input: A = [1,2,1,3,4], K = 3
    Output: 3
    Explanation: Subarrays formed with exactly 3 different integers: [1,2,1,3], [2,1,3], [1,3,4].
    

    Note:

    1. 1 <= A.length <= 20000
    2. 1 <= A[i] <= A.length
    3. 1 <= K <= A.length

    sliding window

    time = O(n), space = O(n)

    class Solution {
        public int subarraysWithKDistinct(int[] A, int K) {
            int[] map = new int[A.length + 1];
            int slow = 0, fast = 0, counter = 0, nsub = 0, res = 0;
            while(fast < A.length) {
                map[A[fast]]++;
                if(map[A[fast]] == 1) {
                    counter++;
                }
                fast++;
                
                if(counter > K) {
                    map[A[slow++]]--;
                    counter--;
                    nsub = 0;
                }
                
                if(counter == K) {
                    while(map[A[slow]] > 1) {
                        map[A[slow++]]--;
                        nsub++;
                    }
                    res += nsub + 1;
                }
            }
            return res;
        }
    }
  • 相关阅读:
    hello
    1234566i 还是规范
    萨嘎给
    DRF 商城项目
    DRF 商城项目
    DRF 商城项目
    Windows 上连接本地 Linux虚拟机上的 mysql 数据库
    xadmin 数据添加报错: IndexError: list index out of range
    python 实现聊天室
    xadmin 组件拓展自定义使用
  • 原文地址:https://www.cnblogs.com/fatttcat/p/11397916.html
Copyright © 2011-2022 走看看