码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【LeetCode】1224. 最大相等频率


    题目

    1224. 最大相等频率

    给你一个正整数数组 nums,请你帮忙从该数组中找出能满足下面要求的 最长 前缀,并返回该前缀的长度:

    • 从前缀中 恰好删除一个 元素后,剩下每个数字的出现次数都相同。

    如果删除这个元素后没有剩余元素存在,仍可认为每个数字都具有相同的出现次数(也就是 0 次)。

    示例 1:

    输入:nums = [2,2,1,1,5,3,3,5]
    输出:7
    解释:对于长度为 7 的子数组 [2,2,1,1,5,3,3],如果我们从中删去 nums[4] = 5,就可以得到 [2,2,1,1,3,3],里面每个数字都出现了两次。
    
    • 1
    • 2
    • 3

    示例 2:

    输入:nums = [1,1,1,2,2,2,3,3,3,4,4,4,5]
    输出:13
    
    • 1
    • 2

    提示:

    • 2 <= nums.length <= 105
    • 1 <= nums[i] <= 105

    思路

    • 遍历数组,保存每个位置的所有数出现的频率count和所有频率出现的频率freq
    • 若当前遍历的数已经出现过,则需将freq数组中对应的频率-1,否则直接插入
    • 因0和1也算最长出现次数,且数组长度大于或等于2,所以结果最小值为2
    • 当遇到一下几种情况需要更新结果集
      • 所有数都只出现一次
      • 所有数都出现n次,但有一个数只出现一次
      • 一部分数出现n次,一部分数出现n-1次,且最大频率只多出现1次

    代码

    from collections import Counter
    class Solution:
        def maxEqualFreq(self, nums: List[int]) -> int:
            freq, count = Counter(), Counter()
            maxFreq = 0
            ret = 2
            for i, num in enumerate(nums):
                if count[num]:
                    freq[count[num]] -= 1
                count[num] += 1
                maxFreq = max(maxFreq, count[num])
                freq[count[num]] += 1
                if maxFreq == 1\
                    or freq[maxFreq] * maxFreq + freq[maxFreq - 1] * (maxFreq - 1) == i + 1 and freq[maxFreq] == 1\
                    or freq[maxFreq] * maxFreq + 1 == i + 1 and freq[1] == 1:
                    ret = max(ret, i + 1)
            return ret
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    复杂度

    • 时间复杂度: O ( n ) O(n) O(n)
    • 空间复杂度: O ( n ) O(n) O(n)
  • 相关阅读:
    人声分离神仙网站,用过都说好~
    uniapp通过功能性编码跳转到原生的app页面
    价值创造未来:财务规划与资源管理
    C练习题_15
    【SpringBoot】怎么在一个大的SpringBoot项目中创建多个小的SpringBoot项目,从而形成子父依赖
    Clickhouse表引擎—集成系列引擎
    h5利用canvas截取video视频
    JavaScript 讲述数据结构 - 栈结构
    Python 使用PIL读取图像自动旋转exif信息
    华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 fio 深度测评华为云云耀云服务器L实例的磁盘性能
  • 原文地址:https://blog.csdn.net/apple_50661801/article/details/126398795
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号