数据结构与算法
文章平均质量分 93
常见数据结构与算法讲解分析与实现(Java语言),包括链表、双链表、堆、栈、二叉树增删改查、二叉树递归非递归遍历、平衡二叉树、哈夫曼树、并查集、dijkstra算法、弗洛伊德算法、dfs、bfs算法以及快排、归并排序等八大排序。新版可订阅或者在公中号[bigsai]中观看。
程序员bigsai
坚持分享学习,写了一本原创数据结构与算法pdf分享给大家。
展开
-
数据结构与算法【01】—绪论
数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运行效率和降低内存占用,在这里数据结构起到相当重要的作用。此外数据结构也蕴含一些面向对象的思想,故学好掌握数据结构对逻辑思维处理抽象能力有很大提升。为什么学习数据结构与算法?如果你还是学生,那么这门课程是必修的,考研基本也是必考科目。工作在内卷严重的大厂中找工作数据结构与算法也是面试、笔试必备的非常重要的考察点。原创 2023-11-03 00:19:52 · 259 阅读 · 0 评论 -
字节面试必须拿下的十道算法题,你会几道?
最近不少小伙伴跟我交流刷题肿么刷,我给的建议就是先剑指offer和力扣hot100,在这些题中还有些重要程度和出现频率是非常非常高的,今天给大家分享当今出现频率最高的10道算法题,学到就是赚到。0X01翻转链表力扣206和剑指offer24原题,题意为:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。分析:翻转链表,本意是不创建新的链表节点然后在原链表上实现翻转,.原创 2021-12-29 15:54:21 · 6482 阅读 · 0 评论 -
从喧闹与富有中搞懂搜索和拓扑
前言大家好我是bigsai。今天给大家分享一个非常有趣的面试题,通过这个问题你可能会对某些情况下,搜索和拓扑有一定的认识,一个问题,既可以用搜索来处理,用记忆化搜索优化,也可以用拓扑排序来解决。题目为力扣851,喧闹和富有 ,题意为有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱,以及不同程度的安静值(quietness)。为了方便起见,我们将编号为 x 的人简称为 "person x "。给你一个数组 richer ,其中 richer[i] = [ai,原创 2021-12-24 14:54:17 · 1215 阅读 · 0 评论 -
面试超爱问的TopK问题,这篇彻底搞明白
文章首发公众号:bigsai 首发博客csdn收录在github算法仓库前言hello,大家好,我是bigsai哥哥,好久不见,甚是想念哇????!今天给大家分享一个TOPK问题,不过我这里不考虑特别大分布式的解决方案,普通的一道算法题。首先搞清楚,什么是topK问题?topK问题,就是找出序列中前k大(或小)的数,topK问题和第K大(或小)的解题思路其实大致一致的。TopK问题是一个非常经典的问题,在笔试和面试中出现的频率都非常非常高(从不说假话)。下面,从小小白的出发点,认为to原创 2021-12-16 12:25:32 · 4596 阅读 · 2 评论 -
字节面试现场,问我如何高效设计一个LRU
前言大家好,我是bigsai,好久不见,甚是想念!最近有个小伙伴跟我诉苦,说他没面到LRU,他说他很久前知道有被问过LRU的但是心想自己应该不会遇到,所以暂时就没准备。奈何不巧,这还就真的考到了!他此刻的心情,可以用一张图来证明:他说他最终踉踉跄跄的写了一个效率不是很高的LRU,面试官看着不是很满意……后来果真GG了。防止日后再碰到这个坑,今天和大家一起把这个坑踩了,这道题我自身刚开始也是用较为普通的方法,但是好的方法虽然不是很难但是想了真的很久才想到,虽然花了太多时间不太值,总算是自己想出来了原创 2021-12-09 10:29:18 · 2652 阅读 · 6 评论 -
一文搞懂动态规划
一文搞懂常见动态规划,连续子数组最大和,子数组的最大乘积,最长递增子序列(LIS),最长公共子序列(LCS),最长公共子串,最长公共子串,不同子序列向你招手!原创 2021-10-29 10:28:58 · 1765 阅读 · 1 评论 -
1024,给大家谈谈如何搞透刷题 玩转力扣!
前言大家好,我是bigsai,好久不见!今天1024,祝大家程序员节快乐,写代码永没bug!今天就给各位小伙伴分享我自己刷题力扣的一些小方法,不一定很有用但是可以参考,祝你更高效的变强!最近在一些群聊、私聊中遇到很多的一个问题就是:刷题,大家也都重视到算法刷题对冲击大厂的重要性,越来越多的人开始卷起来了!但有的人是这样卷起来的,卷的自己都懵了。今天,我就给偏初学者的各种问题谈谈个人刷力扣这方面的观点。刷哪些题?大家刷力扣,目标肯定就是为了冲击大厂的面试笔试,小部分就是为了坚持刷题保持感觉提升原创 2021-10-24 11:21:40 · 3442 阅读 · 4 评论 -
一棵树,怎么就平衡了(图解AVL+实现)
什么是AVL树大家好,我是bigsai,好久不见,甚是想念。对于树这种数据结构,想必大家也已经不再陌生,我们简单回顾一下。在树的种类中,通常分成二叉树和多叉树,我们熟悉的二叉树种类有二叉搜索(排序、查找)树、二叉平衡树、伸展树、红黑树等等。而熟悉的多叉树像B树、字典树都是经典多叉树。普通的二叉树,我们研究其遍历方式,因为其没啥规则约束查找和插入都很随意所以很少有研究价值。但是二叉树结构上很有特点:左孩子和右孩子,两个不同方向的孩子对应二进制的01,判断的对错,比较的大小 ,所以根据这个结构所有树左原创 2021-10-11 21:36:28 · 1309 阅读 · 0 评论 -
最小生成树(Prim、Kruskal)算法,秒懂!
前言在数据结构与算法的图论中,(生成)最小生成树算法是一种常用并且和生活贴切比较近的一种算法。但是可能很多人对概念不是很清楚,什么是最小生成树?一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。通俗易懂的讲就是最小生成树包含原图的所有节点而只用最少的边和最小的权值距离。因为n个节点最少需要n-1个边联通,而距离就需要采取某种策略选择恰当的边。学习最原创 2021-09-30 10:21:55 · 45447 阅读 · 16 评论 -
一文彻底搞定二叉树的前序、中序、后序遍历(图解递归非递归)
前言大家好,我是bigsai,在数据结构与算法中,二叉树无论是考研、笔试都是非常高频的考点内容,在二叉树中,二叉树的遍历又是非常重要的知识点,今天给大家讲讲二叉树的层序遍历。这部分很多人可能会但是需要注重一下细节。前面介绍了二叉排序树的构造和基本方法的实现,遍历也是比较重要的一环,并且二叉树的层序遍历也是bfs的最简单情况,这里我就将二叉树的层序遍历以及常考问题给大家分享一下。在了解二叉树的遍历之前,需要具备数据结构与算法有队列、递归、栈、二叉树,这些内容咱们前面都有讲过,有这方面知识欠缺的同学可以原创 2021-09-22 23:40:01 · 14330 阅读 · 3 评论 -
一次字节面试,被二叉树的层序遍历捏爆了
前言大家好,我是bigsai,在数据结构与算法中,二叉树无论是考研、笔试都是非常高频的考点内容,在二叉树中,二叉树的遍历又是非常重要的知识点,今天给大家讲讲二叉树的层序遍历。这部分很多人可能会但是需要注重一下细节。前面介绍了二叉排序树的构造和基本方法的实现,遍历也是比较重要的一环,并且二叉树的层序遍历也是bfs的最简单情况,这里我就将二叉树的层序遍历以及常考问题给大家分享一下。在了解二叉树的遍历之前,需要具备数据结构与算法有队列、递归、栈、二叉树,这些内容咱们前面都有讲过,有这方面知识欠缺的同学可以原创 2021-09-14 15:38:58 · 5009 阅读 · 4 评论 -
(建议收藏)一文多图,彻底搞懂Floyd算法(多源最短路径)
前言在图论中,在寻路最短路径中除了Dijkstra算法以外,还有Floyd算法也是非常经典,然而两种算法还是有区别的,Floyd主要计算多源最短路径。在单源正权值最短路径,我们会用Dijkstra算法来求最短路径,并且算法的思想很简单—贪心算法:每次确定最短路径的一个点然后维护(更新)这个点周围点的距离加入预选队列,等待下一次的抛出确定。虽然思想很简单,实现起来是非常复杂的,我们需要邻接矩阵(表)储存长度,需要优先队列(或者每次都比较)维护一个预选点的集合。还要用一个boolean数组标记是否已经确定、原创 2021-08-27 16:11:09 · 37332 阅读 · 47 评论 -
一文彻底搞懂快速幂(原理、实现、矩阵快速幂)
前言大家好,我是bigsai,之前有个小老弟问到一个剑指offer一道相关快速幂的题,这里梳理一下讲一下快速幂!快速幂是什么?顾名思义,快速幂就是快速算底数的n次幂。你可能疑问,求n次幂算n次叠乘不就行了?当n巨大无比时候,如果需要末尾有效尾数值等信息这个可能超出计算机运算范围。有多快?快速幂时间复杂度为 O(log₂n), 与朴素的O(n)相比效率有了极大的提高(int 范围10位长度数字32次之内就能搞定,long 范围20位长度数字64次之内也能搞定,你看有多快)。用的多么?快速幂属于数原创 2021-08-15 00:30:00 · 6992 阅读 · 0 评论 -
一文搞懂深度优先搜索、广度优先搜索(dfs、bfs)
前言你问一个人听过哪些算法,那么深度优先搜索(dfs)和宽度优先搜索(bfs)那肯定在其中,很多小老弟学会dfs和bfs就觉得好像懂算法了,无所不能,确实如此,学会dfs和bfs暴力搜索枚举确实利用计算机超强计算大部分都能求的一份解,学会dfs和bfs去暴力杯混分是一个非常不错的选择!五大经典算法的回溯算法其实也是dfs的一种应用,是不是回忆起被折磨的八皇后问题。基础的dfs和bfs学习来思想很容易,写出来模板代码也不难,但很多时候需要在此基础上灵活变通就有不小难度了。不过dfs 和bfs初步学习搞原创 2021-07-26 23:54:14 · 2471 阅读 · 2 评论 -
数据流中的中位数,我轻敌了
前言大家好,我是bigsai。最近轻敌了一个高频问题,分享给大家。最近面试时候遇到一个非常有意思的hard题,面试官没让写代码让说思路,但放在正常应届生招聘那可能就要手撕了,在剑指offer的第41题和力扣【数据流中的中位数】。题目描述是这样的:中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int nu原创 2021-07-01 21:23:42 · 2282 阅读 · 16 评论 -
写给小白看的硬核递归(低调点,当回小白)
本文首发公众号[bigsai] ,首发博客平台csdn,转载请找授权或附上原文链接。大家好,我是bigsai,今天给大家讲讲递归。内容很丰富,看完感觉不错还请三连支持幸苦码字!什么是递归?递归:就是函数自己调用自己。 子问题须与原始问题为同样的事,或者更为简单。递归通常可以简单的处理子问题,但是不一定是最好的解决方式。对于递归要分清以下概念:递归是自己调用自己递归通常不在意具体操作,只关心初始条件、结束条件和上下层的变化关系。递归函数需要有临界停止点(结束条件),即递归不能无限制的执.原创 2021-06-25 10:44:43 · 5490 阅读 · 115 评论 -
光刷题不参加这些算法竞赛?太亏了!
你是爆零选手还是ak选手?原创 2021-06-21 20:27:03 · 11556 阅读 · 6 评论 -
哈夫曼树、哈夫曼编码详解
哈夫曼树、哈夫曼编码,也就这么一回事,一文搞懂!原创 2021-06-17 09:37:57 · 11441 阅读 · 5 评论 -
排个课表学会了拓扑排序!有点意思
原创不易,帅哥美女呢请三连支持一波前言大家好,我是bigsai。拓扑排序,很多人都可能听说但是不了解的一种算法。不知者大多会提出这样的疑问:这是某种排序算法?这好像是一种图论算法?图也能排序?非线性结构在传统意义上确实不太好排序,而拓扑排序它是对有向图的顶点排成一个线性序列。并且不一定唯一。什么是拓扑排序?对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(.原创 2021-06-08 09:43:54 · 2185 阅读 · 5 评论 -
师兄刷题笔记、算法小抄、面试突击版必备资源,帮你走上人生巅峰
前言最近有很多朋友问我刷题、面试有没有什么好的资源。今天就给大家找了三个棒的开源资源,内容非常硬核,很多人靠着它进了大厂。不绕弯子,三个分别是谷歌师兄《谷歌大佬的刷题笔记》,东哥《labuladong的算法小抄》,Guide哥的《Java面试突击版》。三位大佬都是我很钦佩之人,他们把自己整理的东西开源分享,太赞了,我这边帮大家搜集到pdf版本可以直接观看。本来想在csdn上上传资源大家可以直接下载的,但是版权问题不允许,那这些开源资源pdf文件只能通过百度云方式给大家分享了。三份资源可以直接微信搜一原创 2021-06-02 19:51:08 · 7005 阅读 · 22 评论 -
面试官问我有环链表中怎么找到入口,本以为很简单当场却想傻了
有环链表找入口,虽然使用快慢指针但是细节推理太妙了!原创 2021-05-31 19:22:18 · 3893 阅读 · 21 评论 -
这样给学妹讲原码、反码、补码,帮她彻底解决困扰了三天的问题
补码是给机器看的,原码是给人看的,反码是二者的桥梁原创 2021-05-24 13:46:55 · 6312 阅读 · 25 评论 -
520,花一夜给女神写走迷宫游戏
程序员的浪漫,可以用代码来解决!原创 2021-05-20 13:54:44 · 10525 阅读 · 32 评论 -
原来以为(Trie)字典树很难,后来发现不久这么一回事嘛
字典树 牛逼什么是字典树字典树,是一种空间换时间的数据结构,又称Trie树、前缀树,是一种树形结构(字典树是一种数据结构),典型用于统计、排序、和保存大量字符串。所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。可能大部分情况你很难直观或者有接触的体验,可能对前缀这个玩意没啥概念,可能做题遇到前缀问题也是暴力匹配蒙混过关,如果字符串比较少使用哈希表等结构可能也能蒙混过关,但如果字符串比较长、相同前缀较多那么使用原创 2021-05-12 19:30:50 · 2231 阅读 · 20 评论 -
面试官让我手写队列,差点没写出来,回来后赶忙把重点记下来
微信搜一搜【bigsai】更多精彩点赞的帅哥美女祝你们越学越猛目录前言队列介绍普通队列循环队列(数组实现)循环队列(链表实现)双向队列(加餐)总结前言栈和队列是一对好兄弟,前面我们介绍过一篇栈的文章(栈,不就后进先出),栈的机制相对简单,后入先出,就像进入一个狭小的山洞,山洞只有一个出入口,只能后进先出(在外面的先出去,堵在里面先进去的就有点倒霉)。而队列就好比是一个隧道,后面的人跟着前面走,前面人先出去(先入先出)。日常的排队就是队列运转形式的一个描述!栈是一种喜新厌旧的数据结构,来了新的就.原创 2021-05-07 14:59:42 · 5609 阅读 · 22 评论 -
这样给面试官解释约瑟夫环问题的几种巧妙解法,面试官满意的笑了
转载请联系公众号:bigsai前言约瑟夫环问题是算法中相当经典的一个问题,其问题理解是相当容易的,并且问题描述有非常多的版本,并且约瑟夫环问题还有很多变形,这篇约瑟夫问题的讲解,一定可以带你理解通通!什么是约瑟夫环问题?约瑟夫环问题在不同平台被"优化"描述的不一样,例如在牛客剑指offer叫孩子们的游戏,还有叫杀人游戏,点名……最直接的感觉还是力扣上剑指offer62的描述:圆圈中最后剩下的数字。问题描述:0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m.原创 2021-05-06 10:37:03 · 1920 阅读 · 1 评论 -
并查集,不就一并和一查?
什么是并查集并查集这种数据结构,可能出现的频率不是那么高,但是还会经常性的见到,其理解学习起来非常容易,通过本文,一定能够轻轻松松搞定并查集!对于一种数据结构,肯定是有自己的应用场景和特性...原创 2021-04-27 19:57:02 · 1913 阅读 · 9 评论 -
栈这种数据结构,不就后进先出?
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈。原创 2021-04-26 10:38:40 · 1893 阅读 · 7 评论 -
(加强版)大数加减乘除,一文彻底搞定
前言大家好,我是bigsai!(上次发布的忘加原创并且今天的把内容扩充了一下)最近,大数加减频频登上笔试的舞台,小伙伴们在群里也分享自己遇到面试官碰到大数运算的题目,想着这么重要而简单的知...原创 2021-04-19 18:50:00 · 2325 阅读 · 19 评论 -
掉一根头发,搞定二叉排序(搜索)树
前言前面介绍学习的大多是线性表相关的内容,把指针搞懂后其实也没有什么难度,规则相对是简单的,后面会讲解一些比较常见的数据结构,用多图的方式让大家更容易吸收。在数据结构与算法中,树是一个比较大的家族,家族中有很多厉害的成员,这些成员有二叉树和多叉树(例如B+树等),而二叉树的大家族中,二叉搜索树(又称二叉排序树)是最最基础的,在这基础上才能继续拓展学习AVL(二叉平衡树)、红黑树等知识。对于二叉排序树而言,本章重点关注其实现方式以及插入、删除步骤流程,我们会手写一个二叉排序树,二叉树遍历部分的内容比原创 2021-04-06 19:33:53 · 2153 阅读 · 4 评论 -
【手写数据结构】双链表最详细图解
原创公众号:bigsai原创不易,如果有收获请不要吝啬你的一键三连!文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star前言前面有很详细的讲过线性表(顺序表和链表),当时讲的链表以但链表为主,但实际上在实际应用中双链表的应用多一些就比如LinkedList。双链表与单链表区别逻辑上它们均是线性表的链式实现,主要的区别是节点结构上的构造有所区别,这个区别从而引起操作的一些差异。单链表:单链表的一个节点,有储存数据的data,还有后驱节点next(指针)。也就是这个单链表想要一.原创 2021-03-15 17:16:42 · 5063 阅读 · 1 评论 -
深拷贝一个对象会了,怎么深拷贝一个图?
前言在前面,我写过一篇Java的深浅拷贝,那是基于对象的拷贝,但放眼数据结构与算法中,你有考虑过怎么拷贝一个图吗?(无向图)在此之前,你需要对一些概念搞清楚:什么是深拷贝、浅拷贝?浅拷贝:如果拷贝的是引用类型(非基本类型),就只会拷贝一层(嵌套的对象不会被拷贝),如果原对象发生改变,那么拷贝对象也会发生改变。深拷贝:深拷贝的话会拷贝多层,嵌套的对象也会被拷贝出来,相当于开辟一个新的内存地址用于存放拷贝的对象。用通俗一点(可能不完全确切)的话解释,浅拷贝就像你的双胞胎兄弟一样,你们父母亲人都是一样的原创 2021-03-10 09:48:59 · 3434 阅读 · 7 评论 -
一文搞懂全排列、组合、子集问题
微信搜一搜:【bigsai】 获取更多肝货知识春风十里,感谢有你前言Hello,大家好,我是bigsai,long time no see!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合、子集等问题更是非常经典问题。本篇文章就带你彻底搞懂全排列!求全排列?全排列即:n个元素取n个元素(所有元素)的所有排列组合情况。求组合?组合即:n个元素取m个元素的所有组合情况(非排列)。求子集?子集即:n个元素的所有子集(所有可能的组合情况)。总的来说全排列数值个数是所有元素.原创 2021-03-07 15:50:51 · 3895 阅读 · 4 评论 -
【不同的子序列问题】面试官写个字符串要我求有多少个“bigsai“,我懵了
前言有几个pat这是pat的一道题,虽然不是今天的主角题但是我的解决灵感还是来源于这道题,当然下面的题考虑的内容可能稍微复杂一些。不同的子序列给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。示例 1:输入:s = "rabbbi原创 2021-01-31 20:07:49 · 2845 阅读 · 6 评论 -
【面试锦囊】位运算介绍与经典例题总结
原创公众号:bigsai原创不易,如果有收获请不要吝啬你的赞赞!文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star前言位运算隐藏在编程语言的角落中,其神秘而又强大,暗藏内力,有些人光听位运算的大名的心中忐忑,还有些人更是一看到位运算就远远离去,我之前也是。但狡猾的面试官往往喜欢搞偷袭,抓住我们的弱点搞我们,为了防患于未然,特记此篇!本篇的内容为位运算的介绍和一些比较经典的位运算问题进行介绍分析,当然,位运算这么牛,后面肯定还是要归纳总结的。认识位运算什么是位运算?程序中的.原创 2021-01-27 12:51:30 · 2556 阅读 · 5 评论 -
经典面试题:给两个序列如何构造一棵二叉树
微信搜一搜:bigsai大家都在关注的刷题、学习数据结构和算法宝藏项目关注回复进群即可加入力扣打卡群,欢迎划水。近期打卡:LeetCode 98验证二叉搜素树(中序遍历)&99恢复二叉搜索树LeetCode 100相同的树&101对称二叉树LeetCode 102二叉树的层序遍历&103二叉树锯齿形遍历&104二叉树的最大深度前言在面试的过程中,我们经常会遇到一些数据结构相关的问题,很多经典问题百问不烂。而数据结构的问题中排序、链表、二叉树等问题又是经久不衰.原创 2021-01-17 20:54:27 · 4047 阅读 · 5 评论 -
数据结构与算法之线性表(超详细顺序表、链表)
原创公众号:bigsai文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star前言通过前面数据结构与算法基础知识我么知道了数据结构的一些概念和重要性,那么我们今天总结下线性表相关的内容。当然,我用自己的理解解分享给大家。其实说实话,可能很多人依然分不清线性表,顺序表,和链表之间的区别和联系!线性表:逻辑结构, 就是对外暴露数据之间的关系,不关心底层如何实现,数据结构的逻辑结构大分类就是线性结构和非线性结构而顺序表、链表都是一种线性表。顺序表、链表:物理结构,他是实现一个结构实际物.原创 2021-01-14 22:52:07 · 3458 阅读 · 8 评论 -
数据结构与算法必知基础知识
原创公众号:bigsai文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star前言数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运行效率和降低内存占用,在这里数据结构起到相当重要的作用。此外数据结构也蕴含一些面向对象的思想,故学好掌握数据结构对逻辑思维处理抽象能力有很大提升。为什么学习数据结构与算法?如果你还是学生,那么这门课程是必修的,考研基本也.原创 2021-01-06 22:58:12 · 13621 阅读 · 19 评论 -
跳表(SkipList)设计与实现(java)
跳表(SkipList)设计与实现跳表是面试常问的一种数据结构,它在很多中间件和语言中得到应用,我们熟知的就有Redis跳表。并且在面试的很多场景可能会问到,偶尔还会让你手写试一试(跳表可能会让手写,红黑树是不可能的).原创 2020-12-26 16:09:49 · 3462 阅读 · 6 评论 -
面试官本拿求素数搞我,但被我优雅的“回击“了(素数筛)
前言现在的面试官,是无数开发者的梦魇,能够吊打面试官的属实不多,因为大部分面试官真的有那么那几下子。但在面试中,我们这些小生存者不能全盘否定只能单点突破—从某个问题上让面试官眼前一亮。这不,今天就来分享来了。这年头,算法岗内卷不说,开发岗也有点内卷,对开发者要求越来越高了,而面试官也是处心积虑的 “刁难” 面试者,凡是都喜欢由浅入深,凡是都喜欢问个:你知道为什么?你知道原理吗?之类。并且,以前只是大厂面试官喜欢问算法,大厂员工底子好,很多甚至有ACM经验或者系统刷题经验,这很容易理解,但现在一些小公司面原创 2020-12-11 10:05:09 · 4801 阅读 · 9 评论