-
一天一道算法题系列(3) 翻转链表、按区间翻转链表、k个一组翻转链表
发布时间:2022-02-24 23:47力扣T206:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 分析:这是一道比较简单的题目,但是了解它的思想比做这道题本身更重要。 可以分为递归和迭
-
一天一道算法题系列(2) 删除链表倒数第n个节点 、 寻找链表的中间结点 和 两个链表是否相交
发布时间:2022-02-23 12:01 力扣T19 给你一个链表,删除链表的倒数第 k 个结点,并且返回链表的头结点。 分析: 本题其实是要找到倒数第k+1个节点node,并将该节点的next指向
-
一天一道算法题系列(1) 合并两个有序链表、合并k个有序链表
发布时间:2022-02-21 12:05力扣T21: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 这个算法的逻辑类似于「拉拉链」,l1, l2类似于拉链两侧的锯齿,
-
算法小白的入门日记(三十五)动态规划
发布时间:2022-01-29 23:05· 动态规划概述 动态规划(Dynamic programming,简称 DP)不是某一种具体的算法,而是一种算法思想:若要求解一个给定问题,我们需要先解其子问题,再根据子问题的解
-
算法小白的入门日记(三十四)你以为暴力解法很简单?——决策树和回溯算法
发布时间:2022-01-29 20:18回溯算法本质是一种对决策树(是一个多叉树)通过深度优先遍历列出问题所有情况的算法,也就是所谓的暴力解。回溯算法适用于全排列问题和暴力解问题(如果想要得到一个问题的最优解,但想不到复杂度更优的思路,可以
-
算法小白的入门日记(三十三)在有序数组中快速查找——二分查找
发布时间:2022-01-28 21:21二分查找是一种针对有序数组基于分治算法的的快速查找算法。 · 二分查找的基本思路 在一个有序数组中找到中间值mid,将该中间值mid和目标值target比
-
算法小白的入门日记(三十二)用什么数据结构实现随机抽奖——集合
发布时间:2022-01-28 21:04· 集合 set集合是一个其内所存储的所有元素具有唯一性、随机性和无序性的复合型数据结构。唯一性指所有元素不重复;随机性指从集合中pop出一个元素时,集合内所有元素被pop出来的概率一样;无序性指集合
-
算法小白的入门日记(三十一)单调栈和单调队列
发布时间:2022-01-27 19:47· 单调栈 单调(递增)栈是一个从栈顶到栈底按元素从小到大排序的栈(单调递增栈的元素从栈顶到栈底是从小到大,单调递减栈的元素从栈顶到栈底是从大到小)。 单
-
算法小白的入门日记(三十)最大频率栈
发布时间:2022-01-27 14:21最大频率栈是一种按序入栈元素,但出栈时要优先弹出离栈顶最近的在栈内出现次数最多的节点的数据结构。还是以力扣的一道题为例:力扣895. 最大频率栈实现 FreqStack,模拟类似栈的数据结构的操作的一
-
算法小白的入门日记(二九)操作系统如何管理内存——LFU算法
发布时间:2022-01-26 22:40上文 哈希链表和LRU算法 介绍了内存管理算法中的LRU算法,本文介绍另一种管理内存的算法——LFU算法(最不经常使用算法)。 L
-
算法小白的入门日记(二八)操作系统如何管理内存——哈希链表和LRU算法
发布时间:2022-01-26 21:58我们知道计算机的内存有限,如果并发运行的进程所需的内存空间超过了物理内存的总和,就需要通过虚拟内存的技术将休眠的进程的内存空间或者将处于等待或运行进程的部分内存空间换出到磁盘。 操作系统需要使用
-
算法小白的入门日记(二七)高效查找的链表——跳表
发布时间:2022-01-25 18:00先提出一个问题,如果让一个有序链表像有序数组使用二分查找一样实现高效查找。 · 跳表 跳表是一个具有多层索引的有序链表,借助索引可以像有序数组一样实现高效
-
算法小白的入门日记(二六)高效字符串匹配算法——KMP算法
发布时间:2022-01-24 22:59· KMP算法思路KMP算法也是通过减少字符串匹配的轮数进行优化的,BM算法关注“坏字符”和“好后缀”,KMP算法关注“已匹配的前缀”。KMP算法的思路是:将主串A的子串与模式串B进行多轮匹配,每轮匹
-
算法小白的入门日记(二五)高效字符串匹配算法——BM算法
发布时间:2022-01-24 20:34· BM算法 该算法的思路是:主串A和模式串B进行若干轮字符串比较,每轮从模式串B的尾部往前与A的子串进行比较,根据“坏字符”和“好后
-
算法小白的入门日记(二四)字符串匹配算法——BF算法和RK算法
发布时间:2022-01-24 20:32先抛出一个问题:给出两个字符串A和B,如何判断B是否为A的子串并返回B在A中第一次出现的位置? A是主串,B是模式串。 · BF算法(
-
算法小白的入门日记(二三)用一个数据结构存储整本英文字典——前缀树
发布时间:2022-01-24 00:02前缀树是一棵存储字符串的多叉树。 · 前缀树特征 前缀树的节点存储字符串(不是真的存储一个字符串,而是代表一个字符串),节点之间的路径存储字符。 一个节点A代表
-
算法小白的入门日记(二二)图的排序——拓扑排序
发布时间:2022-01-23 18:52拓扑排序是针对有向无环图的一种广度优先遍历顶点的算法,可以将图中所有顶点按照要求的先后顺序排序。当然,拓扑排序本质不是一种排序算法,而是一种遍历图的算法。在如果存在顶点 u 和顶点 v,要想到达顶点
-
算法小白的入门日记(二一)图的连通性问题——Union-Find 并查集
发布时间:2022-01-23 14:23· 并查集解决什么问题 如果给你一个图里面有一些顶点,并且告诉你图中每2个顶点的连接关系,你如何才能快速的找出任意给出的两个顶点是否具有连通性呢? 例如:下面的图结构给出了顶
-
算法小白的入门日记(二十)图的连通性问题——最小生成树算法
发布时间:2022-01-23 11:22 最小生成树算法最小生成树算法的作用是将一个图的多余边去除,使得图中所有顶点满足连通性的同时,边的权重总和最小,此时这个取出多余边的图我们称为最小连通子图,最小连通子图没有回路,因此是一个树
-
算法小白的入门日记(十九)图的最短路径——最短路径算法和多源最短路径算法
发布时间:2022-01-20 10:46 最短路径算法(Dijkstra 迪杰斯特拉算法 ) 对于一个加权无向图,如何求A到G的最短距离? 可以使用深度优先算法计算出所有从A到G的路径和最短距离,不过暴力解的时间复杂度