- 博客(27)
- 收藏
- 关注
原创 图论基础算法总结
SPFA(Shortest Path Faster Algorithm)是一种单源最短路径算法,可以用来求解有向图中某一个源点到其他所有点的最短路径。它是Bellman-Ford算法的优化版本,它的时间复杂度是O(k*E),其中k是最短路径的边数上界,E是图中的边数。SPFA算法采用了贪心的思想,它每次从当前已知最短路径的点出发,尝试更新其邻接点的最短路径。当某个节点的最短路径发生改变时,它的邻接点也可能需要更新最短路径。
2023-04-18 10:36:46
260
原创 栈与队列相关题型
栈:后进先出(LIFO-last in first out):最后插入的元素最先出来。使用栈,要先包含头文件 : #include定义栈,以如下形式实现: stack s;其中Type为数据类型(如 int,float,char等)。运行截图队列:先进先出(FIFO-first in first out):最先插入的元素最先出来。使用队列,要先包含头文件 : #include定义队列,以如下形式实现: queue q;其中Type为数据类型(如 int,float,char等)。运行截图。
2023-04-06 21:57:47
149
转载 正则表达式
正则表达式是一种被用于从文本中检索符合某些特定模式的文本。正则表达式是从左到右来匹配一个字符串的。“RegularExpression”这个词太长了,我们通常使用它的缩写“regex”或者“regexp”。正则表达式可以被用来替换字符串中的文本、验证表单、基于模式匹配从一个字符串中提取字符串等等。想象一下,您正在编写应用程序,并且您希望在用户选择用户名时设置规则。我们希望用户名可以包含字母,数字,下划线和连字符。为了让它看起来不丑,我们还想限制用户名中的字符数量。john_doe,和。Jo。...
2022-07-31 15:54:29
176
原创 【动态规划--买卖股票的最佳时期系列】
问题1:力扣问题链接给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。动态规划5步曲代码如下:问题2 力扣链接题目和1相同,唯一不同的是股票可以买卖多次(注意只有一支股票,所以再次购买前出售之前的股票)分析本题和题目1唯一不同的地方就是推导dp
2022-06-04 16:44:53
176
2
原创 动态规划--多步爬楼梯(爬楼梯进阶版)
多步爬楼梯题目描述1假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶1阶,2阶,… m阶就是物品,楼顶就是背包。每一阶可以重复使用,例如跳了
2022-05-29 15:05:34
564
1
转载 关于时间复杂度,你不知道的都在这里
学习数据结构,对算法的性能分析必不可少,因此了解时间复杂度就成为必然。但对于刚接触算法的同学来说,对时间复杂度的认识处于一种朦胧的状态,所以是时候对时间复杂度来一个深度的剖析了。本篇从如下六点进行分析:究竟什么是时间复杂度 什么是大O 不同数据规模的差异 复杂表达式的化简 O(log n)中的log是以什么为底? 举一个例子这可能是你见过对时间复杂度分析最通透的一篇文章。究竟什么是时间复杂度时间复杂度是一个函数,它定性描述该算法的运行时间。我们在软件开发中,时间复杂度就是用来
2022-05-26 20:03:28
1440
原创 KMP算法用例:实现strstr功能(字符串匹配问题)
kmp算法详解以及strstr功能实现分析什么是前缀:包含首字符不包含尾字符的所有连续子字符串。什么是后缀:包含尾字符不包含首字符的所有连续子字符串。最长相同前后缀是指一个字符串中前缀和后缀相同的字符串长度。什么是前缀表:记录下标i(包括i)之前的字符串中有多长的相同前后缀如:a:最长相同前后缀的长度为0aa:最长相同前后缀的长度为1(前缀为a,后缀为a)aab:...
2022-05-25 09:13:22
199
原创 动态规划--简单题型之爬楼梯
爬楼梯假设你需要爬 n 个台阶才能到达楼顶,每次你可以爬 1 或 2 个台阶,那么有多少种不同的方法才能爬到楼顶呢 ?分析定义数组 dp[i] ,表示爬到第i层楼有 dp[i] 种方法。数组dp[i] 从两个方向推导出来的:dp[i-1],上i-1层楼梯有dp[i-1]种方法,下一步上一个台阶就是dp[i];dp[i-2], 上i-2层楼梯有dp[i-2]种方法,下一步上两个台阶就是dp[i];即dp[i] = dp[i-1]+dp[i-2]代码实现#include<io
2022-05-24 22:07:45
136
原创 二维数组实战:螺旋矩阵
给定一个正整数n,按从外向内的螺旋顺序打印1到n^2的所有值。模拟顺时针“画”矩阵的过程:1.从左到右填充上行2.从上到下填充右列3.从右到左填充下行4.从下到上填充左列注意:矩阵的四条边都要坚持一致的左闭右开或左开右闭的原则,这样才能按照统一的规则“画”下去。
2022-05-24 08:23:07
483
原创 c++:二分查找
二分查找在一个有序无重复元素的数组nums中,寻找一个target,如果找到了就返回对应的下标,如果没有找到就返回-1.#include<iostream>#include<vector>using namespace std;class Solution { public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size()
2022-05-23 18:49:55
458
原创 战疫杯--奇奇怪怪的形状
小凡有一张边长为2的正方形白纸,上面画了2×2个边长为1的格子,每个格子上可以放置棱长为1的立方体。小凡手中有若干个棱长为1的立方体,他随机地在每个格子上放置一些立方体,求由这些立方体组成的几何体的表面积。输入格式:输入两行,每行两个不超过100的正整数,代表从俯视的角度看,白纸所画每个格子上立方体的数量。输出格式:输出一行,包含一个整数,表示几何体的表面积。输入样例:上图对应的输入数据如下:2 11 1输出样例:20代码如下:#include<iostream>
2022-05-23 18:22:10
174
原创 战疫杯--我的账本
我的账本当前疫情防控形势严峻,学校为了减少同学们因为吃饭造成的聚集,规定一个寝室每次派个代表出去买饭,小W寝室的6人(编号1-6)决定每次抽签派一个人去买6份同样的套餐。但是每次买完饭后立刻转账又比较麻烦,于是他们约定每次去买饭的人先垫付,等疫情结束后再统一结算。现在给你宿舍封闭管理期间的n顿饭中每次买饭人的序号和每份饭的单价,问疫情结束后每个人关于饭钱的收支状况?输入格式:第一行一个正整数n,表示有n顿饭下面n行,第i行两个正整数x,y表示第i顿饭由x去买饭,每份饭单价y元。输出格式:一行六
2022-05-23 18:14:28
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人