数组&链表
1. 快慢指针的方式实现判断链表是否有环
栈和队列
1. 栈实现队列(负负得正)
2. 队列实现栈(复杂一些)
3. Java API-Stack是个类;Queue是个接口(LinkedList是其一个实现类)
优先队列
哈希表
树、二叉树、二叉搜索树
二叉树遍历
DFS - 递归代码
伪代码:
private void dfs(node){
//1. process for current node
for(kidNood in node.getKids()){
//2. 如果是图,则加上判断该kidNood是否已经访问过
dfs(kidNood);
}
}
BFS - 非递归
private void bfs(){
queue.add(root);
while(!queue.isEmpty()){
currrentNode = queue.poll();
//process for currentNode
for(kidNood in node.getKids()){
queue.add()
}
}
}
位运算
优点,使用二进制计算,计算速度会快于十进制。
缺点,计算机思维。需要背一些常用的功能。否则比较难于应用。
剪枝
应用在搜索领域,为了降低计算的空间。设置一些剪枝的条件。深蓝(国际象棋机器人)、AlphaGo 就会应用这种
递归、分治
- [ ] 贪心算法
- [ ] 二分查找
- [ ] 字典树
- [ ] 动态规划
- [ ] 并查集