• 2024-10-29python3 堆相关函数的使用
    215.数组中的第K个最大元素classSolution:deffindKthLargest(self,nums:List[int],k:int)->int:ans=[]foriinrange(k):heapq.heappush(ans,nums[i])foriinrange(k,len(nums)):ifnums[i]>ans[
  • 2024-10-26Python的标准库heapq模块的介绍和简单应用
    文章目录1.堆的基本概念2.`heapq`模块的基本使用2.1创建堆2.2插入元素2.3弹出元素3.其他重要函数3.1`heappushpop`3.2`heapreplace`3.3`nlargest`和`nsmallest`3.4`merge`4.堆的应用场景4.1优先队列4.2堆排序5.结论heapq是Python标准库中一个非
  • 2024-09-19Leetcode 1492. n 的第 k 个因子
    1.题目基本信息1.1.题目描述给你两个正整数n和k。如果正整数i满足n%i==0,那么我们就说正整数i是整数n的因子。考虑整数n的所有因子,将它们升序排列。请你返回第k个因子。如果n的因子数少于k,请你返回-1。1.2.题目地址https://leetcode.cn/problems
  • 2024-09-07LeetCode刷题 堆
    一:堆1、一种二叉树的结构(完全二叉树)2、完全二叉树:从上到下;从左到右;填满3、最大堆:根节点的权值大于孩子节点4、最小堆:根节点的权值依次小于孩子节点5、常用操作#创建堆(最大堆,最小堆)#添加元素#获取堆顶元素#删除堆顶元素#堆的长度#堆的遍历二:刷题215数组中的第K个最
  • 2024-08-18【数据结构与算法】如何构建最小堆
    最小堆的定义最小堆,作为一种独特且重要的数据结构,它是一种特殊的二叉树。在这种二叉树中,有一个关键的规则:每一个父节点所存储的值,都必然小于或者等于其对应的子节点的值。这一规则确保了根节点总是承载着整个堆中的最小数值。例如,下面这样一个简单的结构就是最小堆:1
  • 2024-07-20蓝桥杯Python算法竞赛常用的函数库
    博客主页:音符犹如代码系列专栏:Python关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞
  • 2024-05-29【Python Cookbook】S01E03 找到最大最小的N个元素
    目录问题解决方案讨论问题如何在一个集合中找到最大或最小的N个元素?解决方案使用heapq模块。pipinstallheapqheapq模块中,有nlargest()以及nsmallest()两个函数:importheapqnums=[1,8,23,2,7,-4,8,18,42,37]print(heapq.nlargest(3,n
  • 2024-04-13数据结构-堆
    数据结构-堆1.定义:堆是一种特殊的完全二叉树。在堆中,所有的父节点都满足特定的顺序关系(大于或小于)与它们的子节点。这种属性使得堆在处理优先级队列和排序操作时非常有效。2.类型:常见的两种类型的堆是最大堆和最小堆。在最大堆中,每个父节点的值都大于或等于其子节点的值;而在
  • 2024-01-31python的十大数据结构之堆队列heapq(heap queue)
    heapqueque(堆队列),是一个完全二叉树,并且满足一个条件:每个节点(叶节点除外)的值都大于等于(或小于等于)它的子节点。提供了构建小顶堆的方法和一些小顶堆的基本操作方法(如入堆、出堆等),可以用于实现堆排序算法。创建堆的两种方法:importheapqlists=[3,10,20,52,2,83,52
  • 2023-12-14python heapq 模块
    堆的概念堆是用数组表示的二叉树,分为大根堆和小根堆:大根堆是堆顶元素最大的堆,小根堆是堆顶元素最小的堆 堆的建立堆用列表来表示。在往堆中加入元素时,在列表最后加入一个元素并与其父节点比较(n/2位置)看是否需要进行交换,然后层层比较直到根节点pythonheapq#建立小根堆
  • 2023-12-13C++堆——heap与二叉树和python
    数据结构栈-->stack队列-->queue树-->tree堆-->heap散列-->hash图-->graph图结构一般包括顶点和边邻接矩阵DAG,DirectedAcyclicGraph即「有向无环图」树树(Tree)是一种非线性的数据结构,由n个节点组成,其中每个节点都有零个或多个子节点。
  • 2023-12-11Python_数据结构的应用heap
    数据结构栈-->stack队列-->queue树-->tree堆-->heap散列-->hash图-->graph图结构一般包括顶点和边邻接矩阵DAG,DirectedAcyclicGraph即「有向无环图」树树(Tree)是一种非线性的数据结构,由n个节点组成,其中每个节点都有零个或多个子节点。
  • 2023-10-23代码随想训练营第十三天(Pyhton)| 239. 滑动窗口最大值、347.前 K 个高频元素
    239.滑动窗口最大值classSolution:defmaxSlidingWindow(self,nums:List[int],k:int)->List[int]:res=[]tmp=MyQueue()foriinrange(k):tmp.push(nums[i])res.append(tmp.front())fo
  • 2023-10-18力扣每日一题+python知识点回顾
    力扣题目:执行K次操作后的最大分数(题号:2530)给你一个下标从0开始的整数数组nums和一个整数k。你的起始分数为0。在一步操作中:选出一个满足0<=i<nums.length的下标i,将你的分数增加nums[i],并且将nums[i]替换为ceil(nums[i]/3)。返回在恰好执
  • 2023-10-14数据结构之队列(优先队列)
    概念优先队列(PriorityQueue)为一种不必遵守队列特性FIFO(先进先出)的有序线性表,其中每个元素都赋予一个优先级(Priority),加入元素时可任意加入,但有最高优先级者(HighestPriorityOutFirstHPOF)则最先输出。 Java在Java中,PriorityQueue类实现了这样的一种有序队列。PriorityQue
  • 2023-08-12堆排序(内置模块 heapq )(NB)
    博客地址:https://www.cnblogs.com/zylyehuo/#_*_coding:utf-8_*_importheapq#q->queue优先队列importrandomli=list(range(10))random.shuffle(li)print(li)heapq.heapify(li)#建堆(小根堆)n=len(li)foriinrange(n):print(heapq.heappop(li),
  • 2023-06-29文心一言 VS 讯飞星火 VS chatgpt (51)-- 算法导论6.2 3题
    三、当元素A[i]比其孩子的值都大时,调用MAX-HEAPIFY(A.i)会有什么结果?文心一言:当元素A[i]比其孩子的的值都大时,调用MAX-HEAPIFY(A,i)会将A[i]与其孩子中的最小值进行交换,并将A[i]视为新的根节点。这个操作会使得以A[i]为根节点的子树满足最大堆的性质,即根节点比其左
  • 2023-06-25python 大根堆
    python默认的都是小根堆,实现数字的大根堆,可在堆化前把数字乘以-1,输出时再乘以-1变回原值。比如:[5,20,6],堆化前用列表推导式把列表转为: [-5,-20,-6]importheapqimportrandomdata=list(range(1,30))random.shuffle(data)#打乱顺序data=data[:12]#
  • 2023-06-25heapq大小写字母数字混合堆
    importheapqlst=list("AbSZDYM6BTXHU")print(lst)#['A','b','S','Z','D','Y','M','6','B','T','X','H','U&
  • 2023-06-18取列表或字典最大/最小的前几个
    importheapqa_list=[3,4,2,5,1,6]c_dict={'A':3,'B':4,'C':5}topNum=2print(heapq.nlargest(topNum,a_list))print(heapq.nlargest(topNum,c_dict))print(heapq.nlargest(topNum,c_dict.keys()))print(heapq.nlar
  • 2023-06-17Python - Java vs Python对比
     工具类最大堆,最小堆Java-PriorityQueue<T>https://www.cnblogs.com/frankcui/p/12125210.html#_label23 Python- heapq库https://blog.csdn.net/wangws_sb/article/details/124108070 注意:python中的heapq库只有最小堆,没有最大堆,当使用最大堆时,可以在插入元素时
  • 2023-05-31heapq 对有序的数组列表进行整体排序
     """功能:实现对有序的多个数组整体排序,获取topk个最小元素"""fromheapqimport*defheap_sort(arr,top_k):q=[]foriinrange(len(arr)):heappush(q,(arr[i][0],i,0))result=[]forkinrange(top_k):ifq:
  • 2023-05-30leetcode Kth Largest Element in a Stream——要熟悉heapq使用
    703.KthLargestElementinaStreamEasyDesignaclasstofind thekthlargestelementinastream.Notethatitisthekthlargestelementinthesortedorder,notthekthdistinctelement.Your KthLargest classwillhaveaconstructorwhichacceptsanin
  • 2023-04-061792. 最大平均通过率
    题目描述给了一个数组,数组值是0<=x<=1的小数再给了一个值ext,ext可以让以上每个位小数的分子和分母都+1为怎么分配ext,可以让总和/个数最大?f1-优先队列基本分析可以看出是优先队列,队头需要怎么取?考虑增量,每次将1加在哪个分数中会有最大的增量?怎么实现以上思想?因为python默
  • 2023-03-16239. 滑动窗口最大值
    题目描述滑动窗口的长度是k,每次右移一位,需要返回窗口中的最大值f1-单调队列基本分析维护值还是索引?索引可以判断队头是否离开,是更好的选择0-k-1的窗口怎么维护?只是执