刷题(五)

1|0题目


给定一个只包含正整数且非空的数组,返回该数组中重复最多的前N个数字(返回结果按重复次数从多到少排列,N不存在取值非法的情况),请用熟悉的语言实现该需求。10分钟之内写出来

2|0思路


1.假设列表(数组)为a,使用set将该数组过滤,得到一个新的列表sorted_a,这个sorted_a是不重复的
2.对sorted_a进行遍历,用遍历的元素去统计a中该元素的重复个数
3.将元素和重复个数分别作为key,value,构造成新的字典my_dict
4.使用sorted(my_dict.values(), reverse=True)将新字典的值倒序输出
5.定义一个空列表new_a,然后遍历倒序排列的新字典的值,使用key,value去遍历新字典my_dict,如果my_dict的value等于倒序配列的新字典的值,且列表中没有该key,则通过append的方式将该key添加到空列表new_a中
6.最后打印输出new_a

3|0代码实现


a = [1, 6, 7, 4, 4, 5, 4, 5, 4, 5, 5, 6, 7, 8, 5, 6, 7, 3, 4, 2, 2, 1, 4, 8, 9, 4, 5, 6] my_dict = {} set_a = set(a) for item in set_a: if item in a: count = a.count(item) my_dict[item] = count new_a = [] reverse_values = sorted(my_dict.values(), reverse=True) for item in reverse_values: for key, value in my_dict.items(): if item == value: if key not in new_a: new_a.append(key) print(new_a)

__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/12807755.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(166)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2018-04-30 python中的类和对象
点击右上角即可分享
微信分享提示