【hot100篇-python刷题记录】【前 K 个高频元素】

2024-08-28 15:28

本文主要是介绍【hot100篇-python刷题记录】【前 K 个高频元素】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

R6-堆

印象题

法1:哈希表+排序

思路:

用哈希表记录吗每个数出现的次数,按照value值排序,输出倒数k个即可,但这样的话,需要根据values找keys,需要增加一遍遍历哈希表。

想到一个改进,直接用collections.Counter(),但这样的话,怎么输出又不太会处理,还是用第一种方法吧。

class Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:dict=defaultdict(int)ret=[]for num in nums:dict[num]+=1final=sorted(dict.keys(),key= lambda x:dict[x],reverse=True)for i in range(k):ret.append(final[i])return ret

ps:靠,没用堆的知识

法2:最小堆维护k高

最大堆求topk小,最小堆求 topk 大 

所以这里使用最小堆的知识。

 

import heapq
class Solution:def topKFrequent(self, nums: List[int], k: int) -> List[int]:#使用字典统计出现频率:dict=defaultdict(int)for num in nums:dict[num]+=1#最小堆,用于维护出现频率最高的k个数字#如果有数字比根节点还大的话,就需要重构该最小堆树minHeap=[]for num,fre in dict.items():#堆内元素不足k个--堆未满,直接添加if (len(minHeap)<k):heapq.heappush(minHeap,(fre,num))#堆满,且当前高于根节点,重建elif fre>minHeap[0][0]:heapq.heappushpop(minHeap,(fre,num))#最后,从小顶堆中提取前k个频率最高的元素ret=[num for fre,num in minHeap] return ret               

 

ps:

字典的使用

dict.keys()
dict.values()
dict.items()

堆的函数使用

 

这篇关于【hot100篇-python刷题记录】【前 K 个高频元素】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115146

相关文章

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa

Python中使用defaultdict和Counter的方法

《Python中使用defaultdict和Counter的方法》本文深入探讨了Python中的两个强大工具——defaultdict和Counter,并详细介绍了它们的工作原理、应用场景以及在实际编... 目录引言defaultdict的深入应用什么是defaultdictdefaultdict的工作原理

Python中@classmethod和@staticmethod的区别

《Python中@classmethod和@staticmethod的区别》本文主要介绍了Python中@classmethod和@staticmethod的区别,文中通过示例代码介绍的非常详细,对大... 目录1.@classmethod2.@staticmethod3.例子1.@classmethod

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.