LeetCode题解(1224):最大相等频率(Python)
发布日期:2021-06-29 20:09:50
浏览次数:2
分类:技术文章
本文共 1669 字,大约阅读时间需要 5 分钟。
题目:(困难)
标签:哈希表、数学
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | – | – | 超出时间限制 |
Ans 2 (Python) | O ( N l o g N ) O(NlogN) O(NlogN) | O ( N ) O(N) O(N) | 160ms (81.02%) |
Ans 3 (Python) |
解法一:
class Solution: def maxEqualFreq(self, nums: List[int]) -> int: size = len(set(nums)) count1 = collections.Counter() count2 = collections.Counter({ 0: size}) ans = 1 for i, n in enumerate(nums): count2[count1[n]] -= 1 count1[n] += 1 count2[count1[n]] += 1 lst1 = [v for k, v in count2.items() if k != 0 and v != 0] lst2 = [k for k, v in count2.items() if k != 0 and v != 0] # print(i, ":", count1, count2, "->", lst1, lst2) # 如果当前所有的数出现次数都是相同的 if len(lst1) == 1: # 如果它们每个数的出现次数不是1 if lst1[0] != 1: # 那么如果它们不只1个数,则无法实现 if lst2[0] != 1: continue # 如果当前所有的数有两种不同的出现次数 if len(lst1) == 2: # 如果出现少的一个次数不是一次,则无法实现 if min(lst1) != 1: continue # 如果当前所有的数有三种不同的出现次数,则注定无法实现 if len(lst1) > 2: continue ans = max(ans, i + 1) return ans
解法二:
class Solution: def maxEqualFreq(self, nums: List[int]) -> int: nums += [inf] count = collections.Counter(nums) # 从后往前遍历 for i in reversed(range(len(nums))): count[nums[i]] -= 1 lst = sorted(filter(lambda x: x > 0, count.values())) # 剔除掉是0的出现频率 if len(lst) == 1 or (lst[0] == 1 and lst[1] == lst[-1]) or (lst[0] == lst[-2] == lst[-1] - 1): return i
转载地址:https://dataartist.blog.csdn.net/article/details/109850943 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月10日 21时28分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【使用技巧】Pycharm需要配置脚本路径(Script Path)
2019-04-30
【语句总结】Python的三种列表拷贝方式
2019-04-30
【使用技巧】青铜级网络防钓鱼指南
2019-04-30
Java的安装和环境配置
2019-04-30
IDEA的下载和配置
2019-04-30
【概念理解】typedef-Lnode-*Linklist
2019-04-30
【概念理解】gluOrtho2D和glViewport的作用&窗口与显示的关系
2019-04-30
【语句总结】OpenGL的一些语句
2019-04-30
【算法记录】在内循环作出优化的冒泡排序
2019-04-30
【算法记录】梅式砝码问题
2019-04-30
【算法记录】斐波那契数列的余求解
2019-04-30
【语句总结】java中改变数字精确度
2019-04-30
【语句总结】java中数值的精确计算,大型小数:BigDecimal
2019-04-30
【概念理解】Java中parseXXX和valueOf,toString的区别
2019-04-30
【语句总结】回文序列各项之和问题中发现的java特性
2019-04-30
【语句总结】获取字符串的某个单独字符:charAt()方法
2019-04-30
【算法记录】联通体的并查集
2019-04-30
【算法记录】快速幂
2019-04-30
【语句总结】大数操作:BigInteger
2019-04-30
【从零实现一个H.264码流解析器】(二):导入指数哥伦布解码实现并初步解析NALU
2019-04-30