You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组最少频次元素输出问题求助:代码无法通过私有测试用例

问题排查与修正方案

我看了你的代码,问题主要出在排序逻辑上,咱们一步步拆解:

原代码的问题点

  1. 错误的排序方式:你用了list2.reverse(),这只是反转了元素在字典中的插入顺序,而不是按数值降序排列。比如示例输入中,list2初始是[9,1,2],反转后变成[2,1,9],和要求的[9,2,1]不符,这肯定过不了测试用例。
  2. 获取最小频次的冗余操作:你先通过min(dict1, key=dict1.get)找到第一个最小频次的键,再取对应的值,其实直接用min(dict1.values())就能拿到最小频次,更简洁直观。

修正后的代码

from collections import Counter

n = int(input())
# 读取输入并截取前n个元素
list1 = [int(x) for x in input().strip().split()][:n]
# 统计元素频次
counts = Counter(list1)
# 获取最小频次
min_freq = min(counts.values())
# 筛选出所有频次等于最小频次的元素
min_freq_elements = [num for num, freq in counts.items() if freq == min_freq]
# 按数值降序排序
min_freq_elements.sort(reverse=True)
# 输出结果,用空格分隔
print(' '.join(map(str, min_freq_elements)))

关键修正说明

  • 把list2.reverse()改成min_freq_elements.sort(reverse=True):这会直接对元素按数值从大到小排序,完全符合题目要求。
  • 用列表推导式筛选元素,代码更简洁易读。
  • 用' '.join(...)代替字符串拼接,效率更高,还能避免最后多一个空格的问题(你原来用ans[:-1]来处理,其实这个方法更优雅)。

测试一下示例输入:
输入:10,然后9 1 6 4 56 56 56 6 4 2
输出:9 2 1,完全符合要求。

另外,还要注意输入的边界情况,比如当所有元素频次都相同时,代码也会按降序输出所有元素,这也符合题目要求。

内容的提问来源于stack exchange,提问作者Gvs Saisumanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:08:55