Skip to content

Shunli-Wang/MyAlgorithms

Repository files navigation

MyAlgorithms

Algorithms notes learning from ZuoShen.

这里都是左神体系班课程的笔记,膜拜左神~~~
数据结构与算法永远都是一个计算机行业从业者的内功。

每多练习一道题,就距离一名优秀的码农更近了一步。

"常用的算法和数据结构,不了解这些的程序员基本只能写写'Hellow World'。" ——陈黎明(微软,SDE ll)

"最不能容忍功能错误,忽略边界情况。" ——尹彦(英特尔,软件工程师)

"功夫都是练出来的,别人干的好好的,用你干啥?为什么需要你啊?因为你coding好,你练过算法,任何恶心的业务你都能写出来,这叫coding好。" ——左神

Contents

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.位运算加减乘除

About

Algorithms notes learning from ZuoShen.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published