Algorithms notes learning from ZuoShen.
这里都是左神体系班课程的笔记,膜拜左神~~~
数据结构与算法永远都是一个计算机行业从业者的内功。
每多练习一道题,就距离一名优秀的码农更近了一步。
"常用的算法和数据结构,不了解这些的程序员基本只能写写'Hellow World'。" ——陈黎明(微软,SDE ll)
"最不能容忍功能错误,忽略边界情况。" ——尹彦(英特尔,软件工程师)
"功夫都是练出来的,别人干的好好的,用你干啥?为什么需要你啊?因为你coding好,你练过算法,任何恶心的业务你都能写出来,这叫coding好。" ——左神
01_排序.md
1.时间复杂度基本概念
2.选择排序(Selection Sort)
3.冒泡排序(Bubble Sort)
4.插入排序(Insertion Sort)
5.二分法
6.递归时间复杂度分析
7.归并排序(Merge Sort)
8.快速排序(Quick Sort)
9.堆结构
10.堆排序(Heap Sort)
11.桶排序(Bucket Sort)
12.排序算法总结
13.对数器
14.比较器
题01:异或运算实现两数交换
题02:出现奇数次数的元素选取
题03:递归版本数组最大值
题04:小和问题-归并排序的深度改写
题05:荷兰国旗问题-快排的思想来源
题06:数字位置在有有序有限范围内,实现整体排序
题07:面试官要搞你-奇偶划分问题
02_哈希表&有序表&链表.md
1.哈希表(HashSet & HashMap)
2.有序表(TreeSet & TreeMap)
3.链表
题08:基础题目-反转单向和双向链表
题09:打印两个有序链表的公共部分
题10:判断一个链表是否为回文结构
题11:链表的荷兰国旗问题
题12:具有随意指针的链表复制问题
题13:链表入环节点查找(题14的前置问题)
题14:两链表相交系列问题(链表中最难的题目)
03_二叉树.md
1.二叉树三种遍历
2.二叉树树型DP常用框架(重要)
题15:二叉树的三种非递归遍历
题16:完成二叉树宽度优先遍历
题17:求一颗二叉树的最大宽度(基于宽度优先遍历)
题18:判断搜索二叉树(Binary Search Tree)
题19:判断完全二叉树(Complete Binary Tree)
题20:判断满二叉树(Full Binary Tree)
题21:判断平衡二叉树(Balanced Tree)
题22:最低公共祖先节点(Lowest Common Ancestor)
题23:带父指针二叉树的后继节点寻找
题24:二叉树的序列化与反序列化(Serialize & Reconstruct)
题25:纸条对折中的折痕罗列(微软原题)
04_图.md
1.图的存储方式
2.参考图结构(模板)
3.图的宽度优先遍历(BFS)
4.图的广度优先遍历(DFS)
5.拓扑排序(Topology Sort)
6.最小生成树MST(Kruskal算法)
7.最小生成树MST(Prim算法)
8.单源最短路径(Dijkstra算法)
9.Dijkstra的堆加速
题26:将图数据转化为图结构(接口函数)
05_前缀树&贪心算法.md
1.前缀树(Trie)
2.贪心算法
题27.字符串查询问题
题28.会议安排问题
题29.字符串拼接的最小字典序
题30.金条分割的最小代价(Huffman Coding)
题31.项目利润与花费问题(大小根堆配合)
题32.数据流的中位数(大小根堆配合,和贪心无关)
06_暴力递归.md
1.暴力递归(Force Recursive)
题33.汉诺塔问题
题34.字符串子序列打印
题35.字符串全排列
题36.纸牌博弈问题
题37.基于递归的栈逆序
题38.数字转字符串
题39.背包问题
题40.N皇后问题(常规&位运算加速)
07_哈希函数&哈希表&资源限制类.md
1.哈希函数
2.哈希表
3.布隆过滤器(Bloom Filter)
4.一致性哈希原理(Consistent Hashing)
5.大数据类型题目-解题技巧汇总
题41.设计RandomPool结构
题42.Bit Map实现
题43.大数据量频次统计(哈希分流)
题44.区间内词频统计
题45.海量URL去重(哈希分流/布隆过滤器)
题46.Top100热词排行(哈希分流+二维堆汇总)
题47.大数据中两次频次检测(哈希分流/双位图)
题48.大文件数据排序(腾讯二面)
08_KMP & Manacher算法.md
1.最长[前缀后缀相等]子序列长度数组next[]
2.KMP算法
3.最长回文半径数组rArr[]
4.Manacher算法
09_并查集&窗口最大最小&单调栈.md
1.并查集(Union Find)
2.窗口内Max&Min更新
3.单调栈(Monotonous Stack)
题目49.岛问题
题目50.岛问题并行处理(Google级别面试题)
题目51.窗口内Max更新结构
找数组最大A指标(单调栈应用)
10_位运算.md
1.位运算基础
题53.无比较判断大小
题54.判断2和4的幂
题55.位运算加减乘除