算法存档
yihong0618 opened this issue · comments
深度优先用栈,广度优先用队列
图的广度优先和深度优先遍历(BFS和DFS)
二叉搜索树
- 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
- 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
- 任意节点的左、右子树也分别为二叉查找树;
- 没有键值相等的节点。
- ES6的实现
leetcode 453
这题其实是道数学题,想了好久没想到,值得记录下:
已知:数列nums,初始和s0,长度n,最小的数为m
假设移动k步
- 每移动一步,n-1个数会被+1,则最终和s = s0 +(n-1) x k
- 平均数为 s/n
- 最小数每次移动都被+1,因此有:k =s/n -m
- 即:(s0 +(n-1) x k)/n -m =k
- 求得: k = s0 - m x n
今天刷LeetCode 207号题,发现毫无思路,应该是第一道“图”相关的题,记录一下。
根据《算法概论》中对有向无环图的讲解,判断一个有向图是否有环,有两个算法:
拓扑排序
即找出该图的一个线性序列,使得需要事先完成的事件总排在之后才能完成的事件之前。如果能找到这样一个线性序列,则该图是一个有向无环图
DFS
遍历图中的所有点,从i点出发开始DFS,如果在DFS的不断深入过程中又回到了该点,则说明图中存在回路。