
数据结构与算法
文章平均质量分 77
C++算法模板总结
见见大魔王
我很懒
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【数据结构与算法】DP路径问题
网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。可以在记录 dp 数组时,比较不同路径来源的路径和大小。最后,我们从结尾开始,根据上一步的路径坐标,遍历一次,进行记录保存即可。如何输出总和最低的路径呢(如果有多个答案,返回其中之一即可)?解决了一维保存二维位置信息问题,下一步是如何记录路径呢?,在本题中也就是上和左的坐标,哪个小就是从哪里来的。如果我们要通过一个一维向量保存一个。很常规的 DP 问题。对于任何一个在矩阵中的坐标。给定一个包含非负整数的。原创 2023-01-31 12:07:57 · 602 阅读 · 0 评论 -
【数据结构与算法】Manacher算法
Manacher 算法常用于求一个字符串中的最长回文子串。的最长回文子串为123321。计算字符串的最长回文字串最简单的算法就是枚举该字符串的每一个子串,并且判断这个子串是否为回文串,这个算法的时间复杂度为ON3O(N^3)ON3的。Manacher 算法可以在线性时间复杂度ONO(N)ON内求出一个字符串的最长回文字串,达到了理论上的下界。原创 2023-01-05 21:43:46 · 358 阅读 · 0 评论 -
leetcode笔记
1486.数组异或操作(简单)给你两个整数,n和start。数组nums定义为:nums[i] = start + 2*i(下标从 0 开始)且n == nums.length。请返回nums中所有元素按位异或(XOR)后得到的结果。示例 1:输入:n = 5, start = 0输出:8解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。 "^" 为按位异或 XOR 运算符。示例 2:...原创 2021-05-07 10:14:53 · 221 阅读 · 0 评论 -
初步认识红黑树
普通二叉查找树:支持快速插入、删除、查找操作,各个操作的时间复杂度跟树的高度成正比,理想情况下,时间复杂度是 O(logn)。不过,二叉查找树在频繁的动态更新过程中,可能会出现树的高度远大于 log2n 的情况,从而导致各个操作的效率下降。极端情况下,二叉树会退化为链表,时间复杂度会退化到 O(n)。因此,为了解决普通二叉查找树在频繁的插入、删除等动态更新的情况下,出现时间复杂度退化的问题,提出 平衡二叉查找树。平衡二叉查找树:让整棵树左右看起来比较 “对称”、比较 “平衡”,不要出现左...原创 2021-03-22 15:29:29 · 172 阅读 · 0 评论 -
判断前缀码
方法任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。例子{ 01, 0000, 0001, 001, 1 } 是前缀码。 { 0, 100, 110, 1110, 1100} 不是前缀码,原因是同时包含了 110 以及 1100,其中 110 是 1100 的前缀。...原创 2020-07-13 21:07:03 · 13802 阅读 · 0 评论 -
【C++STL】pirority_queue(优先队列)
简介头文件:#include <queue>定义:priority_queue<Type, Container, Functional>Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,...原创 2020-04-11 17:12:57 · 509 阅读 · 0 评论 -
【C++STL】pair
定义标准库:#include <utility> 头文件类模板:template<class T1,class T2> struct pair参数:T1是第一个值得数据类型,T2是第二个值的数据类型。功能:pair将一对值组合成一个值, 这一对值可以具有不同的数据类型(T1和T2), 两个值可以分别用pair的两个公有函...原创 2020-04-11 17:01:01 · 232 阅读 · 0 评论 -
【C++算法练习题】常用的STL
问题一:计算集合的并给你两个集合,计算其并集,即 。注: 中不允许出现重复元素,但是 与 之间可能存在相同元素。输入格式输入数据分为三行,第一行有两个数字 ,分别表示集合 A 和集合 B 的元素个数。后两行分别表示集合 A 和集合 B。每个元素为不超出int范围的整数,每个元素之间用一个空格隔开。输出格式输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间用...原创 2020-04-08 13:09:26 · 1952 阅读 · 0 评论 -
【C++ 算法练习题】二分法例题与解析
问题一:开花问题解析也就是对每个文学优秀奖的获得者,在体育优秀奖中查找即可。也就是在一个数组中找一个数,也就转化为二分搜索问题。二分搜索代码如下:(应该记住)int binary_search(int x, int l, int r){ while(l <= r){ int mid = (l + r) >> 1; if(t...原创 2020-04-08 10:33:29 · 3348 阅读 · 0 评论 -
【C++算法模板】矩阵快速幂
适用题目适用于类斐波那契数列问题。需要递推来确定关系。综上所述,我们需要做的是列出初始条件的 F 矩阵,如F(1) = 1, F(2) = 1等初始情况;然后找到 A 矩阵 ,用于求幂,最后我们算好 即可。矩阵快速幂模板这里使用了斐波那契数列为例子。#include<bits/stdc++.h>using namespace std;typedef l...原创 2020-04-07 10:38:32 · 1294 阅读 · 2 评论 -
【C++算法模板】快速幂
正好在复习算法,总结一下!快速幂的优点在于比起暴力枚举,快速幂每次计算的是平方操作,将算法的时间复杂度从 O(n²) 下降到 O(logn)。原理我们可以把任意一个幂运算的幂次展开乘二进制表示,从而列出一个幂次是二进制权重的乘法式子(如图中等号右边),我们只要计算这个式子,就相当于求了幂运算了。每次循环对a进行平方(a, a², a⁴...),然后根据幂次的二进制表达,我们对其...原创 2020-04-07 09:41:02 · 1813 阅读 · 0 评论 -
【C++算法练习题】贪心算法例题
问题一:奶酪工厂奶牛们收购了一个奶酪工厂,接下来的 个星期里,牛奶价格和劳力价格不断起伏。第 i 周,生产一个单位奶酪需要 便士。工厂有一个货栈,保存一单位奶酪,每周需要 便士,这个费用不会变化。货栈十分强大,可以存无限量的奶酪,而且保证它们不变质。工厂接到订单,在第 i 周需要交付 单位的奶酪给委托人。第 i 周刚生产的奶酪,以及之前的存货,都可以作为产品交付。请帮牛们计...原创 2020-04-06 20:39:15 · 5143 阅读 · 0 评论 -
【C++ 算法练习题】枚举算法
题目一:四平方和问题描述四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多 4个正整数的平方和。如果把 0包括进去,就正好可以表示为 4 个数的平方和。比如:则对于一个给定的正整数 n,可以表示为:。你需要求出字典序最小的一组解 。字典序大小:从左到右依次比较,如果相同则比较下一项,直到有一项不同,较小的一方字典序更小,反之字典序更大,所有项均相同则二...原创 2020-04-05 00:00:13 · 4260 阅读 · 1 评论 -
【C++ 算法练习题】数组下标应用
问题一问题描述小A参加了一个越野比赛,比赛路线中有 n个任务点。比赛说明中给出了每个任务点距离前一个任务点的距离,所有选手会统一从起点出发,按照任务点编号顺序进行徒步比赛。小A在比赛过程中,有 k 次机会可以向组委会询问任意两个任务点(可能不相邻)之间的总距离,从而分配体力,你作为组委会的成员之一要尽快回答他的提问。输入输出量较大,请使用 scanf/printf 进行输入输出...原创 2020-04-04 12:48:07 · 1011 阅读 · 0 评论 -
【C++ 算法练习题】栈的使用例题
问题一问题描述小A在纸上写了一个串,只包含 ’(‘ 和 ’)’ 。一个 ’(‘ 能唯一匹配一个 ’)’ ,但是一个匹配的 ’(‘ 必须出现在 ’)’ 之前。请判断小A写的字符串能否括号完全匹配,如果能,输出配对的括号的位置(匹配的括号不可以交叉,只能嵌套)。输入格式一行输入一个字符串只含有 ’(‘ 和 ’)’ ,输入的字符串长度不大于50000。输出格式如果输入括号不能匹配,输出一行...原创 2020-04-03 23:23:35 · 1693 阅读 · 0 评论 -
【C++算法模板】日期类型题目:节假日
题目日历有阳历(公历)和阴历(农历)之分。每年都有法定节假日,这些分成三类——双休、阳历节假日、阴历节假日。 双休 1)周六和周日22天 阳历节假日 1)元旦:阳历每年 1 月 1 日,放假11天 2)劳动节:阳历每年 5 月 1 日,放假11天 3)国庆节:阳历每年 10 月 1 日,放假33天 4)圣诞节:阳历每年 12 月 25 日...原创 2020-04-02 12:16:12 · 2026 阅读 · 1 评论 -
【C++ STL】字符串截取 substr(int pos, int n)
题目如果两字符串 a, b 满足下面两个条件之一,我们称 a 弱等于 b,或者 b 弱等于 a:a 等于 b a, b的长度相同,并且长度都为偶数,把字符串 a串从正中间拆开,拆成 ,,同样把 b 串拆成,。弱等于同时弱等于,或者弱等于同时弱等于。输入格式输入共两行,每行一个字符串,字符串只包含小写字母。输出格式如果输入两个字符串...原创 2020-03-30 22:07:51 · 1832 阅读 · 0 评论 -
【C++ STL】sort() 数组片段排序
题目现在有N个数,先将数组中的第到第的数字按从小到大的顺序排序。再将数组中第到第的数字按从大到小的顺序排序。输入格式第一行输入 5 个整数,,,,,其中 0 < <<, 0 < <<,这五个数不超过10000;第二行为 N 个整数。输出格式一行N个整数,表示数组排序后的结果,数字之间用空格隔开,...原创 2020-03-29 21:45:16 · 1965 阅读 · 0 评论 -
【C++算法练习题】打印十字图(C++详解)
蓝桥杯历年真题,打印十字图。使用方法:对称性 + 层次迭代法原创 2020-03-28 00:59:50 · 1050 阅读 · 1 评论 -
一篇文章完全弄懂广度优先搜索(BFS)
上文复习了深度优先搜索,我们这篇文章来看看广度优先搜索(BFS)。不要着急,我们先复习一下队列。队列(Queue)在讲广度优先搜索时,我们先来复习一下队列(Queue),这里不把队列作为介绍的重点,基本功扎实的小伙伴可以跳过这一部分。队列是一种数据结构,也就是存放、操作数据的方式,重点需要掌握的是他的逻辑——“先进先出”。跟我们生活中排队上车一样,先进入队列的,先刷卡上车,后进入队列的...原创 2020-03-16 20:39:16 · 1127 阅读 · 0 评论 -
一篇文章完全搞懂深度优先搜索(dfs)(含模板以及例题分析)
模板参考了一个大神,模板原文链接如下:https://blog.youkuaiyun.com/shineboyxxb/article/details/52200236。/*** dfs 模板.* @param[in] input 输入数据指针* @param[inout] cur or gap 标记当前位置或距离目标的距离* @param[out] path 当前路径,也是中间结果* @p...原创 2020-03-15 10:32:09 · 7738 阅读 · 6 评论 -
【C++算法模板】 解决大数问题(加、减、乘、除)(含分析、代码)
也就是被同学问到怎么计算,才发现自己对这个知识点疏忽了,看来题做得还是不够全面。问题提出C++如何计算两个很大很大的数相加,这两个数大到连 long long 也装不下,请问如何计算他们之和?问题分析在计算机中,数字是以二进制的形式存储的,因此对于数的存储以及计算方面具有很大的限制。比如:int 的范围是 -2147483648 ~ 2147483647,超过或者低于他的范围就会产...原创 2020-03-13 21:26:18 · 1368 阅读 · 5 评论