vlambda博客
学习文章列表

牛! 这个小伙的刷题项目开源GitHub,真的超级全和详细!

点击上方“ Github爱好者社区 ”,选择星标
回复“资料”,获取小编整理的一份资料
作者:GG哥,来源:GitHub爱好者社区
这是GitHub爱好者社区   31   篇原创文章

Hello,大家好,我是GG哥!

今天给大家分享一个算法题刷题笔记开源项目,随着大厂对算法越来越重视,算法在无论在社招面试,还是在校招面试中,都是非常重要的。今天推荐的是一个博主把他刷过的题,都放在了GitHub开源项目中。非常值得一看。

学习方法

  • 把所有经典算法写一遍
  • 看算法有关源码
  • 加入算法学习社区,相互鼓励学习(加我vx:xiaofeilong946, 备注入群理由, 拉你入群)
  • 看经典书籍
  • 刷题

基本数据结构和算法

这些算法全部自己敲一遍:

链表

  • 链表
  • 双向链表

哈希表/散列表 (Hash Table)

  • 散列函数
  • 碰撞解决

字符串算法

  • 排序
  • 查找
    • BF算法
    • KMP算法
    • BM算法
  • 正则表达式
  • 数据压缩

  • 二叉树
  • 二叉查找树
  • 伸展树(splay tree 分裂树)
  • 平衡二叉树AVL
  • 红黑树
  • B树,B+,B*
  • R树
  • Trie树(前缀树)
  • 后缀树
  • 最优二叉树(赫夫曼树)
  • 二叉堆 (大根堆,小根堆)
  • 二项树
  • 二项堆
  • 斐波那契堆(Fibonacci Heap)

图的算法

  • 图的存储结构和基本操作(建立,遍历,删除节点,添加节点)
  • 最小生成树
  • 拓扑排序
  • 关键路径
  • 最短路径: Floyd,Dijkstra,bellman-ford,spfa

排序算法

交换排序算法

  • 冒泡排序
  • 插入排序
  • 选择排序
  • 希尔排序
  • 快排
  • 归并排序
  • 堆排序

线性排序算法

  • 桶排序

查找算法

  • 顺序表查找:顺序查找
  • 有序表查找:二分查找
  • 分块查找:块内无序,块之间有序;可以先二分查找定位到块,然后再到 中顺序查找
  • 动态查找:  二叉排序树,AVL树,B- ,B+    (这里之所以叫 动态查找表,是因为表结构是查找的过程中动态生成的)
  • 哈希表:O(1)

15个经典基础算法

  • Hash
  • 快速排序
  • 快递选择SELECT
  • BFS/DFS (广度/深度优先遍历)
  • 红黑树 (一种自平衡的 二叉查找树
  • KMP    字符串匹配算法
  • DP (动态规划 dynamic programming)
  • A*寻路算法:求解最短路径
  • Dijkstra:最短路径算法 (八卦下:Dijkstra是荷兰的计算机科学家,提出”信号量和PV原语“,"解决哲学家就餐问题",”死锁“也是它提出来的)
  • 遗传算法
  • 启发式搜索
  • 图像特征提取之SIFT算法
  • 傅立叶变换
  • SPFA(shortest path faster algorithm)  单元最短路径算法

海量数据处理

  • Hash映射/分而治之
  • Bitmap
  • Bloom filter(布隆过滤器)
  • Trie树
  • 数据库索引
  • 倒排索引(Inverted Index)
  • 双层桶划分
  • 外排序
  • simhash算法
  • 分布处理之Mapreduce

算法设计思想

  • 迭代法
  • 穷举搜索法
  • 递推法
  • 动态规划
  • 贪心算法
  • 回溯
  • 分治算法

算法题目选编

这是一个算法题目合集,题目是我从网络和书籍之中整理而来,部分题目已经做了思路整理。问题分类包括:

  • 字符串
  • 堆和栈
  • 链表
  • 数值问题
  • 数组和数列问题
  • 矩阵问题
  • 二叉树
  • 海量数据处理
  • 智力思维训练
  • 系统设计

还有部分来自算法网站和书籍:

  • 九度OJ
  • leetcode
  • 剑指offer

开源项目中的算法

  • YYCache
  • cocos2d-objc
  • ...

推荐阅读

刷题必备

  • 《剑指offer》
  • 《编程之美》
  • 《编程之法:面试和算法心得》
  • 《算法谜题》 都是思维题

基础

  • 《编程珠玑》Programming Pearls
  • 《编程珠玑(续)》
  • 《数据结构与算法分析》
  • 《Algorithms》 这本近千页的书只有6章,其中四章分别是排序,查找,图,字符串,足见介绍细致

算法设计

  • 《算法设计与分析基础》
  • 《算法引论》 告诉你如何创造算法   断货
  • 《Algorithm Design Manual》算法设计手册 红皮书
  • 《算法导论》 是一本对算法介绍比较全面的经典书籍
  • 《Algorithms on Strings,Trees and Sequences》
  • 《Advanced Data Structures》 各种诡异高级的数据结构和算法 如元胞自动机、斐波纳契堆、线段树  600块

延伸阅读

  • 《深入理解计算机系统》
  • 《TCP/IP详解三卷》
  • 《UNIX网络编程二卷》
  • 《UNIX环境高级编程:第2版》
  • 《The practice of programming》   Brian Kernighan和Rob Pike
  • 《writing efficient programs》  优化
  • 《The science of programming》 证明代码段的正确性   800块一本


感兴趣的,可以去GitHub:https://github.com/Wang-Jun-Chao/leetcode

   
     
     
   
好了...
现在是真的结束了...
我已经夸不动了...

牛! 这个小伙的刷题项目开源GitHub,真的超级全和详细!

千言万语化成一句,这么优秀的仓库,大家多多给仓库创建者  star  支持,你们的 star 是万千开源者源源不断创作的动力!

当然还有多多对我的 在看转发 支持啦,你们的“在看转发”也是我源源不断创作的动力呀...

好啦,今天的分享就到这儿啦,我们下次见啦~

GitHub原创推荐

•  

•  

•  

•  

关注「Github爱好者社区」加星标,每天带你逛Github好玩的项目