随笔分类 -  数据结构与算法

摘要:遇见过挺多次,总结了一下方法,以后写的时候就不需要再慢慢想怎么模拟了 螺旋遍历数组方法: 按层模拟,从最外层开始 每次从第一个元素开始,→ ↓ ← ↑ 为一轮, 通过进行操作的总次数判断是否结束 定义up,down,left,right表示 → ↓ ← ↑ 对应行的边界 up = 0; down = 阅读全文
posted @ 2020-05-03 16:41 ELAIRS 阅读(645) 评论(0) 推荐(0) 编辑
摘要:堆优化的Dijkstra算法 传统Dijkstra,在选取中转节点时,是遍历取当前最小距离节点,但是其实可利用优先队列Priority_queue优化查找过程,将时间复杂度从 降低为 堆优化细节: 堆优化的主要思想就是使用优先队列来代替距起点最近元素的查找。 优先队列数据类型应该包含当前结点编号和当 阅读全文
posted @ 2020-05-03 16:26 ELAIRS 阅读(788) 评论(0) 推荐(0) 编辑
摘要:743.网络延迟时间 有 个网络节点,标记为 到 。 给定一个列表 ,表示信号经过 有向 边的传递时间。 ,其中 是源节点, 是目标节点, 是一个信号从源节点传递到目标节点的时间。 现在,我们从某个节点 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 。 示例: 注 阅读全文
posted @ 2020-05-03 16:23 ELAIRS 阅读(460) 评论(0) 推荐(0) 编辑
摘要:787. K 站中转内最便宜的航班 有 个城市通过 个航班连接。每个航班都从城市 开始,以价格 抵达 。 现在给定所有的城市和航班,以及出发城市 和目的地 ,你的任务是找到从 到 最多经过 站中转的最便宜的价格。 如果没有这样的路线,则输出 。 示例 1: 示例 2: 提示: 范围是 ,城市标签从 阅读全文
posted @ 2020-05-03 16:19 ELAIRS 阅读(274) 评论(0) 推荐(0) 编辑
摘要:图论——最短路径问题 https://www.cnblogs.com/thousfeet/p/9229395.html 两点间最短路径问题: 例如求城市A到城市B之间最短距离 固定起始点,求最短路径 可以使用DFS,或者BFS 任意两点间的最短路径问题: 已知求解固定两点间最短路径的方法,如果要求任 阅读全文
posted @ 2020-05-03 16:17 ELAIRS 阅读(845) 评论(0) 推荐(0) 编辑
摘要:DFS 547 朋友圈 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。 给定一个 N N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j 阅读全文
posted @ 2020-04-22 17:14 ELAIRS 阅读(148) 评论(0) 推荐(0) 编辑
摘要:DFS是一种深度优先的搜索思想,运用递归完成搜索,本质上也算是穷举思想的一类,可以通过剪枝进行优化。 DFS的核心是回溯和递归, 如果以迷宫为例,一般会指定走各个方向的顺序(例如先左再上再右再下)。从起点开始,进入DFS(),判断是否到达终点,再判断四个方向是否可走,如果有路,DFS会进入下一格,并 阅读全文
posted @ 2020-01-15 13:12 ELAIRS 阅读(570) 评论(0) 推荐(0) 编辑
摘要:快速排序算法可能是应用最广泛的算法,它流行的原因是它实现简单、适用于各种不同的输入数据且在一般应用中比其他排序算法都要快得多。快速排序算法引人注目的特点包括它是原地排序(只需要一个很小的辅助栈),且将长度为N的数组排序所需的时间和NlgN成正比。——算法(第四版) p182 快速排序算法是一种分治的 阅读全文
posted @ 2020-01-03 10:12 ELAIRS 阅读(176) 评论(0) 推荐(0) 编辑
摘要:传统数组实现的队列有缺陷,当多次入队出队后,队头指针会后移,当队尾指针达到数组末尾时,会提示队列已满,导致数组前部分空间被浪费。如果当队尾和队头指针到达数组末尾时能从数组[0]继续添加数据,可以提升数组空间利用率。 循环数组也包含队头,队尾指针。每次入队/出队 都利用+1取模的方法(加一后如果大于数 阅读全文
posted @ 2020-01-02 10:24 ELAIRS 阅读(198) 评论(0) 推荐(0) 编辑
摘要:栈 是一种基于后进先出(LIFO)策略的集合类型。当邮件在桌上放成一叠时,就能用栈来表示。新邮件会放在最上面,当你要看邮件时,会一封一封从上到下阅读。栈的顶部称为栈顶,所有操作都在栈顶完成。 前面提到的新邮件,就是在栈顶入栈(push),阅读的时候从栈顶取出一封就是出栈(pop)。就像下面这个图一样 阅读全文
posted @ 2020-01-02 09:58 ELAIRS 阅读(605) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示