数据结构与算法—个人笔记
数据结构与算法课理论+力扣习题笔记。
riverflows7
这个作者很懒,什么都没留下…
展开
-
BFS与DFS练习:102二叉树的层序遍历、104二叉树的最大深度、111二叉树的最小深度
广度优先搜索BFS先访问根节点,再逐层访问。从起点开始对于直接子孩子,地毯式搜索。申请一个队列实现。树不会重复,但图和抽象结合有可能重复。visited = set()def BFS(graph,start,end): queue = [] queue.append(start) visited.add(start) while queue: node = queue.pop() visited.add(node)原创 2020-09-16 15:39:40 · 106 阅读 · 0 评论 -
递归与分治:题目手写50Pow(x,n)、169多数元素、122买卖股票的最佳时机
递归深度优先搜索的基础。一种循环,自己调用自己。比如:盗梦空间attention:递归出口,不然无限死循环。eg1: 计算n!def Factorial(n): #递归的出口 if n<= 1: return 1 return n * Factorial(n-1)递归函数的形式:def recursion(level,param1,param2,...): #递归的终止条件 if level > MAX_LEVEL:原创 2020-09-14 18:54:26 · 161 阅读 · 0 评论 -
树理论与二叉树习题:验证二叉树、二叉树(二叉搜索树)最近公共祖先
树,二叉树,二叉搜索树链表:每个next指向后续节点当要访问中间的节点时,要从头或双向链表从尾部去找。所以当一个节点有多个next,比如left与right,child1、child2…就形成了树。树是无环单向链接的。二叉树:一个节点最多只有两个子节点。如果孩子节点再指向回去,则是图。Python:实现二叉树class TreeNode: def __init__(self,val): self.val = val self.left,self.ri原创 2020-09-13 17:16:19 · 144 阅读 · 0 评论 -
算法题:两数之和与三数字之和思路与代码
1.两数之和题目来源:https://leetcode-cn.com/problems/two-sum/给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路:建立一个字典存下原创 2020-09-10 19:32:37 · 505 阅读 · 0 评论