笔记
文章平均质量分 81
无荒111000
这个作者很懒,什么都没留下…
展开
-
最短路算法
图论:最短路径算法 最短路: 最短路主要分为,单源最短路 和 多源汇最短路。 在单源最短路中要区分是否含有负权边,如果图中不含负权边使用主要算法有 dijkstra 算法,而含负权边则使用 bellman-ford 算法 或 spfa 算法。 在多源汇最短路中主要有 floyd 算法。 单源最短路:不含负权边、 朴素 dijkstra 算法 算法流程:假设存在 n 个点,m 条边,求 s 点到任意一点的最短距离 定义一个数组 dist,dist[i] 表示从 s 点到点 i 的距离。 初始化 dist,原创 2021-02-06 13:41:26 · 497 阅读 · 2 评论 -
单调队列双端队列
单调队列解决窗口内最值问题 单调队列:具有一定单调性的队列(单调递增,单调递减),可以从队列的首尾进出元素。 例题:LeetCode239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释: 滑动窗口的位置原创 2021-01-02 11:47:11 · 306 阅读 · 0 评论 -
面向过程与面向对象
一、什么是“面向过程”,什么是”面向对象“ “面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。 面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。 可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6原创 2020-11-22 09:28:23 · 186 阅读 · 3 评论 -
字典树(前缀树)简单实现
什么时字典树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 基本操作 查找、插入、删除(此段代码没有实现删除) 实现 在每一个节点上不保存信息,把信息保存在边(路径)上。 如上图所示将字符串的状态表示在节点之间的连接线上。 插入: 遍历需要插入的字符串,从树的根节点开始查找,是否存在当原创 2020-11-15 21:55:22 · 354 阅读 · 0 评论