leetcode技巧
文章平均质量分 54
1
张小猪的家
这个作者很懒,什么都没留下…
展开
-
heapq — Heap queue algorithm(堆队列,优先队列)
该模块提供了堆队列算法的实现,也称为优先队列算法。堆是二叉树,其每个父节点的值都小于或等于其任何子节点,堆的特性是它的最小元素总是根。主要用法heapq.heappush(heap, item)将itme的值推送到堆上,保持堆不变。heapq.heappop(heap)弹出并返回堆中最小的项,保持堆不变。如果堆为空,则引发IndexError。要访问最小的项而不弹出它,请使用heap[0]。简单例子>>> h = []>>> heappush原创 2021-07-30 15:48:37 · 207 阅读 · 0 评论 -
二叉树(前序,中序,后序,层序)遍历递归与循环的python实现
二叉树的遍历是在面试使比较常见的项目了。对于二叉树的前中后层序遍历,每种遍历都可以递归和循环两种实现方法,且每种遍历的递归实现都比循环实现要简洁。下面做一个小结。一、中序遍历前中后序三种遍历方法对于左右结点的遍历顺序都是一样的(先左后右),唯一不同的就是根节点的出现位置。对于中序遍历来说,根结点的遍历位置在中间。所以中序遍历的顺序:左中右1.1 递归实现每次递归,只需要判断结点是不是None,否则按照左中右的顺序打印出结点value值。class Solution: def inorde转载 2021-08-10 19:04:01 · 2061 阅读 · 0 评论 -
快速幂算法
递归快速幂快速幂是一个二分的思路。我们很自然地可以得到一个递归方程:计算a的n次方,如果n是偶数(不为0),那么就先计算a的n/2次方,然后平方;如果n是奇数,那么就先计算a的n-1次方,再乘上a;递归出口是a的0次方为1。递归快速幂的思路非常自然,代码也很简单(直接把递归方程翻译成代码即可):def qpow(a, n): if n == 0: return 1 elif n % 2 == 1: return qpow(a, n - 1) * a else:原创 2021-08-21 19:06:26 · 137 阅读 · 0 评论 -
Python位运算符
Python位运算符按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:下表中变量 a 为 60,b 为 13,二进制格式如下:a = 0011 1100b = 0000 1101-----------------a&b = 0000 1100a|b = 0011 1101a^b = 0011 0001~a = 1100 0011运算符描述实例&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结原创 2021-08-29 11:29:14 · 465 阅读 · 0 评论