头图

大学四年一路走来,我把这些私藏的算法学习工具全贡献出来了!

大家都知道,数据结构和算法一直是学习编程和求职路上的一个大的拦路虎,而且不管是大厂还是小厂,在笔试和面试时都是在重点考察数据结构+算法题。

这篇文章就把自己当时在学习数据结构和算法路上私藏的一些比较好用的神器工具网站和资源做一波梳理和总结,相信看完一定会有你喜欢的!

话不多说,上菜!


Data Structure Visualization

我们都知道数据结构和算法一个比较难以掌握的原因就是很难形象地在脑海中形成一个结构化的画面,尤其是当一些结构和算法比较复杂时,对人的想象能力有一定要求。

Data Structure Visualization这个网站则提供了一种将数据结构和算法进行可视化的功能,并开发了交互式的动画展示,便于理解和掌握数据结构+算法。

目前该网站已经把包括像列表、堆、栈、队列、树、哈希表、图、查找、排序、递归、动态规划等一系列主要的数据结构和算法都进行了可视化展示,非常便于初学者理解和掌握。

我们以排序算法里的「堆排序为例」,这个网站可以给出完整的可视化过程,可以说非常nice了!

而且在动画下方还可以暂停播放以及自行调节画幅大小以及动画速度等一些参数,非常便于学习。


Big-O Cheat Sheet

提到数据结构和算法的学习,一个绕不过去的问题那就是算法复杂度,包括时间复杂度分析和空间复杂度分析。

复杂度通常会使用大O记号来表示,比如冒泡排序的平均时间复杂度是O(n^2),而快速排序的平均时间复杂度则是O(nlog(n))。

除此之外还有包括像堆、栈、队列、链表、跳表、哈希、B-Tree、堆排序、选择排序、归并排序等等一系列数据结构和算法的复杂度最好都是能要求在理解的基础上熟记的。

Big-O Cheat Sheet这个网站则把常见的数据结构和算法的各种复杂度进行了对比+整理+归纳,并制备了精美的表格,可供查阅+复习+背诵,一目了然,非常清楚。


VisuAlgo

VisuAlgo这个网站也提供将常见数据结构和算法进行动态可视化的功能,并且支持中文。

VisuAlgo一个比较不错的功能是除了可以动态演示算法之外,还可以按步骤进行动画演示甚至是交互,并且包含了每个步骤的解释,的确有点酷炫了。

这地方给一个归并排序的动画示例看看效果:


Algorithm Visualizer

Algorithm Visualizer同样是一款交互式算法可视化网站,并且支持Java、JavaScript、C++等主流编程语言。

该网站内容分为三大部分,最左侧可以自由选择不同的数据结构和算法(目前支持包括二叉树、图、排序、查找、动归、贪心等很多数据结构以及算法);中间部分则进行算法可视化展示以及控制台的打印输出;最右侧用于展示算法的源码并支持修改运行并看到效果。


牛客在线编程

牛客题库里面的在线编程模块用于进行数据结构和算法的练习还是十分不错的,里面有不少题目是剑指offer上的题,这些基本都是求职前必刷的。

除了支持提交多种编程语言的代码之外,还有一个比较好的点是可以看到大家的题解、讨论、甚至是提交的代码,而且又是中文社区网站,这样交流和参考起来还是挺方便的。


codeforces

codeforces别名CF,一看这名字就知道有点东西。它是一家俄罗斯的网站,而且据说最早是由一群颇具开源精神的大学生们维护的。

codeforces的比赛系统和积分系统一直是被大家所熟知的。大家在上面用它的比赛系统还是比较多的,每个用户都有Rating积分,很多人都在上面享受上分带来的成就感。

除此之外,上面的题集质量也还不错,各种难度都有,在里面刷题也是非常不错的选择。


HackerRank

HackerRank其实和上面刚介绍的codeforces有点像,主要内容也包括数据结构和算法题的题库练习与比赛。

除此之外,HackerRank在其他相关的计算机技术主题上都有涉猎,比如像编程语言、SQL、数据库等等。


LeetCode

LeetCode力扣我想就不用多说了。

俗话说得好,熟刷算法300遍,不会做题也会吹。没错,就算上面提到的所有网站都没有兴趣不想看,那这里LeetCode上的数据结构和算法的题目基本是必刷的。

还记得我们那时候用LeetCode时才几百道题,现在的LeetCode题量和那时相比感觉都翻了好多倍了。

一般来说,LeetCode题量慢慢上来之后,再加上多回顾多总结多发散,慢慢地对于数据结构和算法这一块就会变得越来越有心得。没办法,这玩意没啥捷径,多思考多练习才是关键。


知名OJ

除了上面这些网站之外,还有一些口碑一直不错的高校OJ系统有兴趣的也可以看一看。

  • 北大OJ:

  • 中科大OJ:

  • 杭电OJ:

  • 哈工大OJ


写在最后

好了,今天的分享就到这里了,希望这些学习和练习数据结构+算法的工具和资源能够对大家有所帮助。

另外最近花了大把力气,把自用的编程学习资源做了个大整理。

都是纯肝货,目录如下。

该内容 GitHub https://github.com/rd2coding/Road2Coding 已经收录,里面还有我整理的6大编程方向的自学路线+知识点大梳理我的简历面试考点几本硬核pdf笔记,以及我的程序员人生,欢迎star。

整理不易,欢迎支持,我们下篇见!


CodeSheep的技术分享
分享虚拟化、容器化、API化、微服务化的WEB技术,更多务实、能看懂、可复现的原创文章尽在作者公众号 Co...
3.4k 声望
7.6k 粉丝
0 条评论
推荐阅读
GPT-4,终于来了!
就在昨天凌晨,OpenAI发布了多模态预训练大模型GPT-4。这不昨天一觉醒来,GPT-4都快刷屏了,不管是在朋友圈还是网络上都看到了很多信息和文章。GPT是Generative Pre-trained Transformer的缩写,也即生成型预训练...

CodeSheep阅读 643评论 3

封面图
正则表达式实例
收集在业务中经常使用的正则表达式实例,方便以后进行查找,减少工作量。常用正则表达式实例1. 校验基本日期格式 {代码...} {代码...} 2. 校验密码强度密码的强度必须是包含大小写字母和数字的组合,不能使用特殊...

寒青57阅读 8.6k评论 11

JavaScript有用的代码片段和trick
平时工作过程中可以用到的实用代码集棉。判断对象否为空 {代码...} 浮点数取整 {代码...} 注意:前三种方法只适用于32个位整数,对于负数的处理上和Math.floor是不同的。 {代码...} 生成6位数字验证码 {代码...} ...

jenemy49阅读 7.3k评论 12

再也不学AJAX了!(二)使用AJAX ① XMLHttpRequest
「再也不学 AJAX 了」是一个以 AJAX 为主题的系列文章,希望读者通过阅读本系列文章,能够对 AJAX 技术有更加深入的认识和理解,从此能够再也不用专门学习 AJAX。本篇文章为该系列的第二篇,最近更新于 2023 年 1...

libinfs42阅读 6.9k评论 12

封面图
Java12的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft63阅读 11.9k

Java8的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft32阅读 24.7k评论 1

「多图预警」完美实现一个@功能
一天产品大大向 boss 汇报完研发成果和产品业绩产出,若有所思的走出来,劲直向我走过来,嘴角微微上扬。产品大大:boss 对我们的研发成果挺满意的,balabala...(内心 OS:不听,讲重点)产品大大:咱们的客服 I...

wuwhs32阅读 3.5k评论 5

封面图
3.4k 声望
7.6k 粉丝
宣传栏