算法
朋克归零膏
这个作者很懒,什么都没留下…
展开
-
334. 递增的三元子序列
class Solution: def increasingTriplet(self, nums: List[int]) -> bool: if not nums: return False else: n1, n2 = float('inf'), float('inf') for i in nums: if i <= n1:原创 2020-12-14 17:30:04 · 56 阅读 · 0 评论 -
300. 最长上升子序列
class Solution: def lengthOfLIS(self, nums: List[int]) -> int: if not nums: return 0 else: dp = [1 for _ in range(len(nums))] for l in range(len(nums)): for i in range(l):原创 2020-12-14 17:14:53 · 59 阅读 · 0 评论 -
剑指 Offer 15. 二进制中1的个数
请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 class Solution: def hammingWeight(self, n: int) -原创 2020-09-30 16:34:24 · 62 阅读 · 0 评论 -
剑指 Offer 14. 剪绳子
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1]。请问 k[0]*k[1]...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof 著作权归领扣网络所有。商业转载请联系官方原创 2020-09-26 02:44:20 · 107 阅读 · 0 评论 -
Prim算法最小生成树-Python
qwurey的文章写的很好懂了,但是自己代码再写出来确实不一样,主要还是练一下基本功,自己基本功还不够,代码勉强凑合吧,可能过多一阵自己回来再看就能写出更好的。作者的图很好看,用什么画的呢。 VISITED = 999999 # 表示已经加入MST DISCONNECT = 10000 # 表示无通路 def Prim(graph: dict, start: str) -> list: lowcost = [DISCONNECT]*len(graph) lowcost[int原创 2020-06-19 17:40:29 · 279 阅读 · 0 评论 -
递归算法
刷到一题练习题,重新思考递归算法。 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? # 用递归思想 class Solution: def climbStairs(self, n: int) -> int: if n == 1: return n if n == 2: return n return self.climbStai原创 2020-06-17 11:23:03 · 86 阅读 · 0 评论 -
图的遍历 DFS和BFS
有图像帮助理解的算法都不是很难,如图,从0出发,进行深度优先遍历和广度优先遍历。 这个图和我做的题目可能不太符合,只是方便理解,真正输入的是这样的邻接矩阵 G = {'0': ['1', '2'], '1': ['2', '3'], '2': ['3', '5'], '3': ['4'], '4': [], '5': []} 深度优先遍历类似于树的先序遍历: 准备一个集合存放走过的顶点。 找出从0出发还没被访问过的邻接的顶点,访问该顶点。 重复2,直到原创 2020-06-17 18:00:36 · 131 阅读 · 0 评论