精华内容
下载资源
问答
  • 现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目。 示例 1: 输入:arr = [5,5,4], k = 1 输出:1 解释:移除 1 个 4 ,数组中只剩下 5 一种整数。 示例 2: 输入:arr = [4,3,1,1,3,3,2...

    题目:

    给你一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目。

    示例 1:

    输入:arr = [5,5,4], k = 1
    输出:1
    解释:移除 1 个 4 ,数组中只剩下 5 一种整数。
    示例 2:

    输入:arr = [4,3,1,1,3,3,2], k = 3
    输出:2
    解释:先移除 4、2 ,然后再移除两个 1 中的任意 1 个或者三个 3 中的任意 1 个,最后剩下 1 和 3 两种整数。

    提示:

    1 <= arr.length <= 10^5
    1 <= arr[i] <= 10^9
    0 <= k <= arr.length

     

    代码:

    class Solution(object):
        def findLeastNumOfUniqueInts(self, arr, k):
            """
            :type arr: List[int]
            :type k: int
            :rtype: int
            """
            arrdict={}
            for i in arr:
                if i in arrdict:
                    arrdict[i]+=1
                else:
                    arrdict[i]=1
            arrdict=sorted(arrdict.items(),key=lambda kv:kv[1])
            length=len(arrdict)
            count = 0
            for f, v in arrdict:
                count += 1
                k -= v
                if k < 0:
                    return length - count + 1
    
            return 0

    想法:

      按照出现次数形成排序字典,用k一个一个减去它,用来判断剩下的不同整数的最少数目;

    展开全文
  • 5713. 字符串中不同整数的数目 难度简单4收藏分享切换为英文接收动态反馈 给你一个字符串 word ,该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123 34...

    5713. 字符串中不同整数的数目

    给你一个字符串 word ,该字符串由数字和小写英文字母组成。

    请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123 34 8 34"
    。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123""34""8""34"

    返回对 word 完成替换后形成的 不同 整数的数目。

    只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。

    class Solution {
        public int numDifferentIntegers(String word) {
             int len=word.length();
            word=word.replaceAll("[^\\d]"," ");
            String arr[]=word.split(" ");
            HashSet<String> set = new HashSet<>();
            for (String s : arr) {
                if(s.length()==0){
                    continue;
                }
                int j=0;
                while(s.charAt(j)=='0'&&j<s.length()-1){
                    j++;
                }
                set.add(s.substring(j,s.length()));
            }
            return set.size();
        }
    }
    

    前导零,不止一个的前导零

    • substring处理

    溢出

    • 长字符串和整数转换就不要考虑parse了,一定会有long溢出的,直接判断格式就vans了

    技巧

    1.String按下标查找:.charAt(int index);

    2.subString左闭右开

    3.不可重复无序集Hashset计算个数

    4.正则表达式和replace结合

    展开全文
  • leetcode算法题每日一练-K 个不同整数的子数组题目分析实现结果 题目 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。 (例如,[1,2,3,1,2...

    leetcode算法题每日一练-K 个不同整数的子数组

    题目

    给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。

    (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。)

    返回 A 中好子数组的数目。

    示例 1:

    输入:A = [1,2,1,2,3], K = 2
    输出:7
    解释:恰好由 2 个不同整数组成的子数组:[1,2], [2,1], [1,2], [2,3], [1,2,1], [2,1,2], [1,2,1,2].
    

    示例 2:

    输入:A = [1,2,1,3,4], K = 3
    输出:3
    解释:恰好由 3 个不同整数组成的子数组:[1,2,1,3], [2,1,3], [1,3,4].
    

    提示:

    • 1 <= A.length <= 20000
    • 1 <= A[i] <= A.length
    • 1 <= K <= A.length

    分析

    1. 根据题意可知,计算不同整数的子数组,很容易联想到滑动窗口。
    2. 如示例1 [1,2,1,2,3],设定左边界从数组下标0开始,题目知k为2,所以滑动窗口值为2.即可得,[1,2],[1,2,1],[1,2,1,2]。无法再继续下去,因为最后一个值为3已超出k=2的数量了。
    3. 然后将左边界一刀下标1的位置,重复同上操作,可得[2,1],[2,1,2]
    4. 继续移动边界为下标2即值为1,同上,得[1,2]
    5. 同上,边界为下标3即值为2,得[2,3]
    6. 左边界为最后数组最后一个值了,无法滑动了,所以终结计算返回结果。

    实现

     public static int subarraysWithKDistinct(int[] A, int K) {
            // 记录窗口内不重复的整数
            List<Integer> contains = new ArrayList<>();
            // 计算最大子数组即返回结果
            int count = 0;
            for (int i = 0; i < A.length; i++) {
                // 清空数组,确保内循环开始是空数组
                contains.clear();
                for (int j = i; j < A.length; j++) {
                    // 子数组内不重复数字的添加条件
                    if ((contains.size() == 0 || contains.size() != K) && !contains.contains(A[j])) {
                        contains.add(A[j]);
                    }
                    // 滑动计算
                    if (contains.contains(A[j]) && contains.size() == K) {
                        count++;
                    }
                    // 遇到边界终止循序如
                    if (!contains.contains(A[j]) && contains.size() == K) {
                        break;
                    }
                }
            }
            return count;
        }
    

    结果

    分析可得,两次遍历所以时间复杂度为O(N)的平方,空间复杂度用了一个list去存储,所以为O(N)。官方也提供了双指针滑动窗口计算方法,读者可以参考下。

    展开全文
  • 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。) 返回 A 中好子数组的数目。...

    问题描述

    给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。

    (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。)

    返回 A 中好子数组的数目。

    示例 1:

    输入:A = [1,2,1,2,3], K = 2
    输出:7
    解释:恰好由 2 个不同整数组成的子数组:[1,2], [2,1], [1,2], [2,3], [1,2,1], [2,1,2], [1,2,1,2].

    示例 2:

    输入:A = [1,2,1,3,4], K = 3
    输出:3
    解释:恰好由 3 个不同整数组成的子数组:[1,2,1,3], [2,1,3], [1,3,4].

    提示:

    • 1 <= A.length <= 20000
    • 1 <= A[i] <= A.length
    • 1 <= K <= A.length

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/subarrays-with-k-different-integers
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    思路分析及代码实现

    在这里插入图片描述
    原问题可以转换成为求解「最多存在 K 个不同整数的子区间的个数」与 「最多存在 K - 1 个不同整数的子区间的个数」,他们两个的差值即是K个不同整数的子区间

    class Solution:
        def subarraysWithKDistinct(self, A: List[int], K: int) -> int:
            return self.atMost(A, K) - self.atMost(A, K-1)
        
        def atMost(self, A, K):
            n = len(A) 
            freq = collections.Counter()
            left = 0
            right = 0
            count = 0
            res = 0
            while right < n:
                if freq[A[right]] == 0:
                    count += 1
                freq[A[right]] += 1
                right += 1
                while count > K:
                    freq[A[left]] -= 1
                    if freq[A[left]] == 0:
                        count -= 1
                    left += 1
                res += right - left + 1
            return res
    

    这道题自己没做出来,看了两遍官方题解才捋明白思路。。。。

    展开全文
  • 文章目录1. 题目2. 解题 1. 题目 给你一个字符串 word ,该字符串由数字和小写英文字母组成。...如果两个整数的 不含前导零 的十进制表示不同,则认为这两个整数不同。 示例 1: 输入:word = "a123bc34d8ef34
  • 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。) 返回 A 中好子数组的数目。...
  • 要求从数组中恰好移除 k 个元素,输出移除后数组中不同整数的最少数目。 在这里主要用到了python内置的counter & sort函数。 通过counter函数统计数组中不同字母出现的频率 把统计结果转换成list 借助sort依照...
  • 给你一个字符串 word ,该字符串由数字和小写英文字母组成。...只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数不同。 示例 1: 输入:word = "a123bc34d8ef34" 输出:3 解释:不同整数
  • 1805. 字符串中不同整数的数目 给你一个字符串 word ,该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如,“a123bc34d8ef34” 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻...
  • 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定不同的子数组为好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。) 返回 A 中好子数组的数目。...
  • 字符串中不同整数的数目 题目描述 给你一个字符串 word ,该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻...
  • 给你一个字符串 word ,该字符串由数字和小写英文字母组成...如果两个整数的 不含前导零 的十进制表示不同,则认为这两个整数不同。 示例 1: 输入:word = “a123bc34d8ef34” 输出:3 解释:不同整数有 “123”、
  • 992. K 个不同整数的子数组

    千次阅读 2021-02-09 10:33:47
    992. K 个不同整数的子数组 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。)...
  • 992. K 个不同整数的子数组 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为 好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。...
  • 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。) 返回 A 中好子数组的数目。...
  • 给你一个字符串word,该字符串由...返回对word完成替换后形成的不同整数的数目。 只有当两个整数的不含前导零的十进制表示不同, 才认为这两个整数也不同。 示例 1: 输入:word = "a123bc34d8ef34" 输出:3 ...
  • 992. K 个不同整数的子数组 难度困难262 给定一个正整数数组A,如果A的某个子数组中不同整数的个数恰好为K,则称A的这个连续、不一定不同的子数组为好子数组。 (例如,[1,2,3,1,2]中有3个不同的整数:1,2,以及...
  • leetcode_992. K 个不同整数的子数组

    千次阅读 2021-02-09 10:10:24
    给定一个正整数数组 A,如果 A的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。 (例如,[1,2,3,1,2] 中有3个不同的整数:1,2,以及3。) 返回A中好子数组的数目。 ...
  • 本个题目我们采用双指针的方法进行解决, 但是这里有需要注意的地方,根据 好子数组 的定义,当我们使用双指针的方法时,会发现当固定左边端点时,符合 恰好有 KK 个不同整数 的子区间的右端点并不是唯一的。...
  • K 个不同整数的子数组 避免每日太过咸鱼,一天搞定一道LeetCode算法题 一、题目描述 难度: 困难 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为...
  • 字符串中不同整数的数目 给你一个字符串 word ,该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如,“a123bc34d8ef34” 将会变成 " 123 34 8 34" 。注意,剩下的这些整数为(相邻彼此...
  • 992.K 个不同整数的子数组 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。) ...
  • 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。) 返回 A 中好子数组的数目。...
  • 992. K 个不同整数的子数组 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。)...
  • 此题的问法和很多滑动窗口的题目问法类似但还是有些不同,题目中问的是恰好有K个不同整数的区间数量,而一般滑动窗口问的问题是最多。。。。可以将问题转化为最多有K个整数的区间数量,这样的区间数量就是right - ...
  • 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定不同的子数组为好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。) 返回 A 中好子数组的数目。...
  • 整数溢出详解

    2021-04-04 07:16:07
    在 C 语言中,整数的基本数据类型分为短整型 (short),整型 (int),长整型 (long),这三个数据类型还分为有符号和无符号,每种数据类型都有各自的大小范围 当程序中的数据超过其数据类型的范围,则会造成溢出,整数...
  • 992、K 个不同整数的子数组 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。 (例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 973,354
精华内容 389,341
关键字:

不同的整数