leetcode-158周赛-5225-最大相等频率
题目描述:
方法:
- class Solution(object):
- def maxEqualFreq(self, A):
- count = collections.Counter()
- freqs = collections.Counter()
- ans = 1
- for i, x in enumerate(A):
- count[x] += 1
- c = count[x]
- freqs[c] += 1
- if c-1 > 0: freqs[c-1] -= 1
- if freqs[c-1] == 0:
- del freqs[c-1]
- L = len(freqs)
- #print freqs
- if L <= 2:
- if L <= 1:
- k, = freqs.keys()
- fk = freqs[k]
- #print '.', i+1, ';', k, freqs[k]
- if k == 1 or fk == 1:
- ans = i + 1
- else:
- a, b = freqs.keys()
- fa, fb = freqs[a], freqs[b]
- # remove a
- #print i+1,a,fa,';',b,fb
- if fa-1 == 0 and a-1 == b:
- ans = i + 1
- if fb-1 == 0 and b-1 == a:
- ans = i + 1
- if a == 1 and fa == 1 or b == 1 and fb == 1:
- ans = i + 1
- return ans
另:倒推
- from collections import Counter
- class Solution(object):
- def maxEqualFreq(self, nums):
- cnt = Counter(nums)
- l = len(cnt)
- s = n = len(nums)
- if n==1:
- return 1
- for i in range(n-1,0,-1):
- if (s-1) % l == 0:
- k = (s-1)//l
- if all(x==k or x==k+1 for x in cnt.values()):
- return i+1
- if l!=1 and (s-1) % (l-1) == 0:
- k = (s-1)//(l-1)
- if all(x==k or x==1 for x in cnt.values()):
- return i+1
- num = nums[i]
- s-=1
- cnt[num]-=1
- if cnt[num]==0:
- del cnt[num]
- l-=1
- return 1
leetcode-158周赛-5225-最大相等频率的更多相关文章
- [LeetCode] 895. Maximum Frequency Stack 最大频率栈
Implement FreqStack, a class which simulates the operation of a stack-like data structure. FreqStack ...
- 【LeetCode】451-根据字符出现频率排序
题目描述 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r'和' ...
- leetcode.排序.451根据字符出现频率排序-Java
1. 具体题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列. 示例 1: 输入: "tree" 输出: "eert" 解释: 'e'出现两次,'r ...
- ✡ leetcode 158. Read N Characters Given Read4 II - Call multiple times 对一个文件多次调用read(157题的延伸题) --------- java
The API: int read4(char *buf) reads 4 characters at a time from a file. The return value is the actu ...
- leetcode[158] Read N Characters Given Read4 II - Call multiple times
想了好一会才看懂题目意思,应该是: 这里指的可以调用更多次,是指对一个文件多次操作,也就是对于一个case进行多次的readn操作.上一题是只进行一次reandn,所以每次返回的是文件的长度或者是n, ...
- [leetcode]158. Read N Characters Given Read4 II - Call multiple times 用Read4读取N个字符2 - 调用多次
The API: int read4(char *buf) reads 4 characters at a time from a file. The return value is the actu ...
- leetcode 双周赛9 进击的骑士
一个坐标可以从 -infinity 延伸到 +infinity 的 无限大的 棋盘上,你的 骑士 驻扎在坐标为 [0, 0] 的方格里. 骑士的走法和中国象棋中的马相似,走 “日” 字:即先向左(或右 ...
- leetcode 双周赛9 找出所有行中最小公共元素
给你一个矩阵 mat,其中每一行的元素都已经按 递增 顺序排好了.请你帮忙找出在所有这些行中 最小的公共元素. 如果矩阵中没有这样的公共元素,就请返回 -1. 示例: 输入:mat = [[,,,,] ...
- [每日一题2020.06.16] leetcode双周赛T3 5423 找两个和为目标值且不重叠的子数组 DP, 前缀和
题目链接 给你一个整数数组 arr 和一个整数值 target . 请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target .可能会有多种方案,请你返回满足要求的两个子数组长度和的 ...
随机推荐
- chroot 试用alpinelinux安装软件包的问题
前边有说明使用chroot 体验alpinelinux,但是因为默认没有dns server,造成软件包无法下载 现象 问题原因 解决方法 copy host resolv.conf 到alpine ...
- Python中 将数据插入到Word模板并生成一份Word
搬运出处: https://blog.csdn.net/DaShu0612/article/details/82912064
- C++中的delete加深认识
delete操作: 我们在删除一个指针之后,编译器只会释放该指针所指向的内存空间,而不会删除这个指针本身. 1.假如你不去释放,那么该区域的内存始终不能被其他数据所使用.2.指向该内存的指针是个局部变 ...
- 解决springdatajpa插入大量数据速度慢的问题
通过看控制台日志可以知道,jpa执行插入的时候每次都会先查询是否存在,然后再一条一条的执行插入,速度相当慢,所以可以jpa和mybatis一起用,用mybatis写原生的sql语句,用过foreach ...
- leetcode-162周赛-1254-统计封闭岛屿数量
题目描述: 自己的提交: class Solution: def closedIsland(self, grid: List[List[int]]) -> int: def dfs(grid,r ...
- Unity 调用jar闪退 解决方案
{ https://www.cnblogs.com/YZFHKMS-X/p/11864496.html }
- Ecshop商品浏览历史样式修改方法
想要修改ECSHOP的浏览历史样式,发现 history.lbi 中不能修改. 需要修改的文件:includes\lib_insert.php,找到函数:function insert_history ...
- Robot Framework:接口测试
---恢复内容开始--- robotframework进行接口测试,需要安装Request和RequestLibrary包 pip install requests pip install -U ro ...
- Android中ViewPgae中的Fragment如何确认当前页面可见的问题
由于在ViewPage中PageAdapter来管理所有的Fragment.在加载一个Fragment的时候,会自动缓存左右几个(默认是一个)页面,此时也会调用到正常的生命周期函数,onCreate, ...
- TESTNG听录音笔记
1. 是什么:有了它可以管理测试用例,做数据驱动,多线程模式下case的鲍旭类型 2. 如何生成testng的xml文件 -- based on Eclipse Eclipse里装上testn插件,指 ...