File tree Expand file tree Collapse file tree 1 file changed +67
-0
lines changed Expand file tree Collapse file tree 1 file changed +67
-0
lines changed Original file line number Diff line number Diff line change @@ -2423,5 +2423,72 @@ class Solution:
24232423 res += dp[n][j][k]
24242424 res %= mod
24252425
2426+ return res
2427+ ```
2428+
2429+ ### 5225. 最大相等频率
2430+
2431+ [ 原题链接] ( https://leetcode-cn.com/contest/weekly-contest-158/problems/maximum-equal-frequency/ )
2432+
2433+ #### 思路
2434+
2435+ 分别记录数字出现的** 频次总类** 和各** 频次出现的次数** 。
2436+
2437+ 存在组合情况如下:
2438+
2439+ - 出现的频次总类 > 3:非法
2440+ - 出现的频次总类 = 2(假设分别为 a 频次出现 x 次,b 频次出现 y 次):
2441+ - 若其中有出现频次为 1 的数,且频次为 1 的总类仅出现一次:可删除该频次,得到前缀
2442+ - 若其中 b - a == 1 and y == 1,可删除一个出现频次为 b 的数,得到前缀
2443+ - 出现频次总数 = 1:
2444+ - 需要频次 == 1 或 频次个数 == 1
2445+
2446+ 一旦找到合法前缀,即可记录下来。遍历到末端即可找到最大前缀。
2447+
2448+ ``` python
2449+ class Solution :
2450+ def maxEqualFreq (self , nums : List[int ]) -> int :
2451+ # num 出现的次数
2452+ num_map = dict ()
2453+ # 频次出现的次数
2454+ count_map = dict ()
2455+ res = 0
2456+ # 计算每个数字出现的次数
2457+ for i in range (len (nums)):
2458+
2459+ num = nums[i]
2460+ if num not in num_map:
2461+ num_map[num] = 1
2462+ count_map[1 ] = count_map.get(1 , 0 ) + 1
2463+ else :
2464+ num_map[num] += 1
2465+ count_map[num_map[num]] = count_map.get(num_map[num], 0 ) + 1
2466+ pre_count = num_map[num] - 1
2467+ count_map[pre_count] = count_map.get(pre_count, 0 ) - 1
2468+ if count_map[pre_count] == 0 :
2469+ count_map.pop(pre_count)
2470+
2471+ map_length = len (count_map)
2472+
2473+ if map_length > 2 :
2474+ # 出现的频次数量大于 2:非法
2475+ continue
2476+
2477+ # value 值排序
2478+ # a 为频次,b 为频次数量
2479+ counts = sorted ([[a, b] for a, b in count_map.items()])
2480+ if map_length == 2 :
2481+ # 频次出现的次数
2482+ if counts[0 ][0 ] == 1 and counts[0 ][1 ] == 1 :
2483+ res = i + 1
2484+ continue
2485+ if counts[1 ][0 ] - counts[0 ][0 ] == 1 and counts[1 ][1 ] == 1 :
2486+ res = i + 1
2487+ continue
2488+ elif map_length == 1 :
2489+ if counts[0 ][1 ] == 1 or counts[0 ][0 ] == 1 :
2490+ res = i + 1
2491+ continue
2492+
24262493 return res
24272494```
You can’t perform that action at this time.
0 commit comments