
数据结构
文章平均质量分 78
吴师兄学算法
跟着吴师兄,算法学习好轻松,专注于辅导北美算法面试、国内大厂算法面试、华为OD算法面试,累计辅导了数千个同学,100%好评!
展开
-
刷到 LeetCode 这个评论,被笑到了
大家好,我是吴师兄。今天早上我在 LeetCode 第 141 号问题 环形链表 的评论区中发现了一个称得上是天秀的解法,简直太骚气了,忍不住分享给大家。首先给没有见过这道题目的小伙伴补充一下前置知识, 环形链表这道题目讲的是给你一个链表的头节点 head ,判断链表中是否有环。所谓链表有环,直观上来看就是这个样子:严谨一些的说明指的是如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。一般正经解法是使用快慢指针的思路,即在开头设置两个指针,一个跑的快,一个跑的慢,原创 2022-03-05 08:54:02 · 2906 阅读 · 3 评论 -
看完谷歌大佬的 LeetCode 刷题笔记,我马上去字节跳动面试!
如果你刷 LeetCode 觉得吃力,那么一定需要这份谷歌大佬的 LeetCode 刷题笔记!微信搜索「五分钟学算法」,公众号回复 04 即可获取对应的下载链接,以下是详细介绍。在这里推荐一个谷歌大佬的刷题笔记,每一道题的题解都写得非常清楚.作者在美国卡内基梅隆大学攻读硕士学位时,为了准备实习秋招,他从夏天开始整理 Leetcode 上的题目,几个月的时间,刷了几百道题目。凭借着扎实的基础和长期的勤奋,他很快找到了如愿的工作。入职前,闲暇的时候,他突然想到,自己刷了那么多题,而且对很多题目的解.原创 2021-06-30 11:11:32 · 3650 阅读 · 2 评论 -
别迷茫了,师兄告诉你怎么刷 LeetCode
如果你想要开始刷题,那么第一步就是:打开 LeetCode 官网,点击标签,选择一道顺眼的题目开始刷。注意,在这过程中,不要左思右盼,不要去搜索与思考到底是刷 LeetCode 好还是去牛客网刷剑指 Offer 好。我作为一名算法小白的时候,就犯了这个错误:在粗略的学习基本的数据结构与算法后,准备开始刷题,总想着找一个最有效最好的刷题平台。一会在 LeetCode 题解区逛逛,一会在牛客网看看面经,结果就是整个人烦躁不安,焦虑迷茫,题没有刷几道,羡慕嫉妒恨却增加了几分:别人的代码怎么这么简洁 ? 别人原创 2021-06-25 15:10:37 · 5474 阅读 · 10 评论 -
看视频学编程的一点小建议
大家好,我是程序员吴师兄。我是一个挺怕麻烦的人,同时某些时刻也急于求成,这个性格造就了我工作后很难沉下心来看书学习,而程序员又是一个需要不断学习才能不落后的职业,所以我选择了一个十分适合我的学习方式—看视频。今天和大家聊一聊我看视频的一些心得。首先,得摆出看视频的一个最大的弊端::你以为你学会了,实际上没有。这个弊端是天然存在的。由于时间的限制,录制视频的人往往无法复刻所有的编程过程,有的时候甚至裁剪,造成了一个需要两个小时的编码时间,视频里面只有十几分钟,一切都是那么的行云流水,一切都是那么的顺原创 2021-06-20 17:46:09 · 3186 阅读 · 1 评论 -
牛逼!这个网站可以帮助程序员命名变量和函数!
大家端午节好呀,我是程序员吴师兄,一个坚持在 CSDN 日更原创的程序员,过节也不休息的那种。最近很多同学私信我:吴师兄呀,我刚刚开始学编程,每一次命名函数或者变量的时候都好纠结,有时候还用拼音,被师妹看到后笑我一个月。宠粉的吴师兄立马熬夜肝了这篇文章,看完后分分钟解决这个难题。程序员最头疼的事情除了头发以外就是给变量或函数命名,一开始学编程语言的时候还可以 abc、a1、x2 等方式命名,等到工作过程中开始真正的项目开发时,如果还是这样随意的命名,即使同事可以忍受你的 abc,隔几个月自己再重新看代原创 2021-06-14 16:44:37 · 10649 阅读 · 2 评论 -
为什么有人劝别选计算机专业?
大家好,我是程序员吴师兄,一个坚持在 CSDN 日更原创的程序员。今天想和大家聊一聊为什么有人劝别选计算机专业?和大家说一句掏心窝的话:直到 2021 年,计算机专业依旧是寒门改变命运的一个最佳选择之一,要不是怕被喷,我都想把之一去掉,因为想了半天,我实在找不到其它与之匹配的选择。。之所以会出现有人劝退计算机专业,我琢磨了一下,可能有以下几个原因:1、本身对编程无感,但听说计算机专业高薪,所以人云亦云的进来,后来发现这钱没有想象中那么好挣,996 是常态,于是发出呐喊:别选计算机!2、家里有矿,背原创 2021-06-13 09:56:47 · 70872 阅读 · 154 评论 -
程序员高考试卷泄密,检查一下你能答对多少题?
一、选择题(共计 50 分)1、在下列四种排序算法,只有( )是一种不稳定排序A、冒泡排序B、选择排序C、插入排序D、归并排序2、一个数组,含有大量重复元素,使用( )进行排序是一种合理的抉择A、快速排序B、双路快速排序C、三路快速排序D、希尔排序3、杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉 1261 年所著的( )一书中出现,LeetCode 上第 ( )和( )就是与杨辉三角有关的题目。A、《详解八章算法》、118 、119B、《详解九章算法》、原创 2021-06-12 18:58:32 · 3102 阅读 · 3 评论 -
程序员学算法必备网站之一:VisuAlgo
大家好,我是程序员吴师兄。今天和大家聊一聊为什么我喜欢用动画讲解算法。原因很简单,在文章中加入动画和图片相对于只有文字代码会更加有趣耐读,一方面可以让技术类文章显得不那么枯燥,另外一方面视觉冲击感带来的印象会更加深刻,有利于理解和记忆。对于学算法的小白来说,如果教程中有动画和图片,往往能帮助他们更好的入门,在这里给大家推荐一个算法可视化的网站 VisuAlgo 。地址:https://visualgo.net/zhVisuAlgo 包含了程序员必学的数据结构和算法,比如排序、链表、哈希表、二原创 2021-06-12 18:50:49 · 13224 阅读 · 3 评论 -
我是一个几乎没有计算机知识的人,怎样入门计算机?
大家好,我是程序员吴师兄,这段时间有不少 CSDN 的粉丝私信问我:吴师兄,我是一个几乎没有计算机知识的人,怎样入门计算机?宠粉的吴师兄立马熬夜肝了一篇攻略给大家,如果你也有着同样的疑惑,那我推荐你花 10 个小时看看《计算机科学速成课》,这套课程是 Crash Course 旗下的计算机科学相关的视频,早期发布在 Youtube 上,整个系列课程高达 12 亿的播放量,令人开心的是,你可以在 B 站上免费观看,有汉化哟。Crash Course 的这套计算机科学视频一共 40 集,基本上每集控制在原创 2021-06-11 12:01:55 · 8508 阅读 · 15 评论 -
作为计算机专业学生,最应该学习的课程前五位是什么?
不知不觉自己的程序员生涯已经有 6 年。变秃了,也变强了。如果让我回到大学生涯,我一定会认认真真的学习下面的课程,起码我的头发可以少掉一半!1、计算机组成原理2、计算机操作系统3、计算机编译原理4、数据结构与算法5、计算机网络一、计算机组成原理计算机组成原理这门课很好地向我们阐述了计算机是如何工作的,妹子咨询你电脑问题的时候,答案就藏在这门课程里面(大雾)。推荐书籍:《深入理解计算机系统》这本书是从程序员的角度来看待整个计算机系统的,所以是非常适合程序员的。但是这本书不仅仅包含了计算机原创 2021-06-10 16:03:42 · 25430 阅读 · 52 评论 -
知乎高赞,如何系统地学习算法?
大家好,我是程序员吴师兄,之前我在知乎写过一个回答如何系统地学习算法,截至目前已经收获了 1w 的赞同,今天特定整理一下,分享给 C 站的小伙伴们,有帮助记得点赞哟。以下为原文。不 BB,直接上干货,非科班出生,毕业工作后才开始学算法,到目前学了 4 年 !!!为了让你对数据结构和算法能有个全面的认识,我画了一张图,里面几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点。这里面有10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;10个算法:递归、排序、二分查找、原创 2021-06-10 15:55:43 · 3965 阅读 · 1 评论 -
面试官:你连复杂度分析都不懂还敢来面试?
算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,比如排序就有前面的十大经典排序和几种奇葩排序,虽然结果相同,但在过程中消耗的资源和时间却会有很大的区别,比如快速排序与猴子排序:)。如果你想要了解更多复杂度相关的知识,可以看看我之前的文章「时间」与「空间」复杂度更多算法内容请访问:五分钟学算法那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的「时间」和「空间」两个维度去考量。时间维度:是指执行当前算原创 2021-05-25 12:39:22 · 2837 阅读 · 15 评论 -
听师兄一句劝,早点去追学姐学妹!
听师兄一句劝,早点去追学姐学妹,为啥呢?看完这篇文章你就知道了。假设有三男(分别是 A ,B ,C )和三女(分别是 x,y ,z ),他(她)们对异性的心仪程度如对话框所示。比如对于男 A 来说,心仪对象排名为 x 排第一,y 排第二,z 排第三。今天是特殊节日,你化身为丘比特,来设计一个算法分配对象。立即接受算法下面以男生主动追求对象为例来讲解 立即接受算法。一开始男生们都去追求自己 最 心仪的女生,而女生们面对追求者们立刻做出决定确定对象(如果有多个追求者则选择他们之前心仪程度更高的那原创 2021-05-20 10:32:41 · 3292 阅读 · 14 评论 -
学姐手把手教我怎么写冒泡排序,我转身就教会了学妹,爽!
学弟学妹们好,我是你们的吴师兄呀。昨天在朋友圈看到梁唐写的一篇文章《一半人写不出冒泡排序,你的同龄人都躺下了》,里面提到了一个例子:轮子哥毕业去参加面试的时候,第一轮笔试考察冒泡排序,结果现场的一半学生都没写出来。这个案例《编程珠玑》一书中的一个结论很相似:给予他们充足时间的情况下,有百分之九十以上的人无法编写出完全准确的二分查找法的代码。估计不少读者看到这两个例子会觉得难以置信,这不是最基础的东西么?但事实的确如此,上述的案例二我曾经在知乎分享过,很多人尝试了一下没写对,不信的话你可以花两分钟在留原创 2021-05-18 19:40:05 · 3170 阅读 · 20 评论 -
学弟学妹们,看完这篇文章你还不会数「二进制中 1 的个数」?
学弟学妹们好,我是帅吴,欢迎来到 图解剑指 Offer 结构化专栏,在这个专栏里我将和大家一起学习如何用结构化的思维来思考、解题、写代码,希望能帮助你即使在面试的时候紧张也能做对。今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题15. 二进制中1的个数。题目汇总链接:https://www.algomooc.com/hi-offer一、题目描述请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如原创 2021-05-11 16:00:35 · 1513 阅读 · 10 评论 -
动画图解:十大经典排序算法动画与解析,看我就够了!(配代码完全版)
排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:时间复杂度与空间复杂度关于时间复杂度:...原创 2019-11-13 16:17:21 · 63537 阅读 · 86 评论 -
看动画轻松理解「递归」与「动态规划」
在学习「数据结构和算法」的过程中,因为人习惯了平铺直叙的思维方式,所以「递归」与「动态规划」这种带循环概念(绕来绕去)的往往是相对比较难以理解的两个抽象知识点。程序员小吴打算使用动画的形式来帮助理解「递归」,然后通过「递归」的概念延伸至理解「动态规划」算法思想。什么是递归先下定义:递归算法是一种直接或者间接调用自身函数或者方法的算法。通俗来说,递归算法的实质是把问题分解成规模缩小的同类问题...原创 2019-11-13 15:55:35 · 8160 阅读 · 17 评论 -
看动画理解「链表」实现LRU缓存淘汰算法
前几节学习了「链表」、「时间与空间复杂度」的概念,本节将结合「循环链表」、「双向链表」与 「用空间换时间的设计思想」来设计一个很有意思的缓存淘汰策略:LRU缓存淘汰算法。循环链表的概念如上图所示:单链表的尾结点指针指向空地址,表示这就是最后的结点了。而循环链表的尾结点指针是指向链表的头结点。因此**循环链表是一种特殊的单链表。**它跟单链表唯一的区别就在于尾结点。它像一个环一样首尾相连,所...原创 2018-12-24 17:43:04 · 607 阅读 · 4 评论 -
21天,在Github上获取 6300 star
大家好,我是程序员小吴。12月初我在GitHub上上传了一个仓库,到现在为止获取了 6300 star,下面和大家聊聊关于项目启动的初衷、面临的一些困难和未来的计划。「LeetcodeAnimation」的萌芽?在刷Leetcode的过程中,遇到很多有意思和有难度的题目,有时候自己能做出来,有时候需要看别人的分析才能解开,但往往隔一段时间再去看原题的时候又是一头雾水。这时,我在考虑:有没有一...原创 2018-12-29 15:27:57 · 608 阅读 · 0 评论 -
十大经典排序算法动画,看我就够了!
Tip 为了演示更加清楚,本文中所有的动画都放慢了速度,因此GIF大小对比之前会有所增大,图片加载速度会变慢,如果你想获取所有的超清动画,在公众号 五分钟学算法 回复 github 可获得资料。在前面的章节中详细的讲解分析了十大经典排序算法,本文将进行一个大总结同时分析它们的时间复杂度与稳定性。排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序...原创 2018-12-04 16:08:03 · 813 阅读 · 5 评论 -
看完动画你还会不懂 快速排序么
前言由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列 -----《图解数据结构》,主要使用动画来描述常见的数据结构和算法。本系列包括十大排序、堆、队列、树、并查集、图等等大概几十篇。快速排序快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2)...原创 2018-11-23 10:03:21 · 414 阅读 · 0 评论