- 博客(58)
- 收藏
- 关注
原创 算法——动态规划(新)
由于付一次钱,就可以爬一层或者两层楼梯,所以我们需要比较的是到第i-1层和到第i-2层最小的值————min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]) 因此这就是我们的状态转移方程。思路和不同路径的思路一样,只不过需要判断障碍物的位置,若是有障碍物,那么就直接将障碍物所在的dp表的值定为0,表明到此位置的路径数为0,无法到达。这里我们知道判断就只有两个,一个是单个数字,一个是两个数字,所以我们也可以按照动态规划的方式,由第n-1个和第n-2个推出第n个的值。
2023-11-19 23:54:20
1127
原创 算法——滑动窗口
什么是窗口?就是符合题目要求的区域内的数据,将每次符合数据的窗口内的数据记录下来,然后将窗口后移,寻找其他符合要求的数据,每次进入窗口和退出窗口都需要一定的要求。
2023-11-12 16:41:00
365
原创 算法——买卖股票问题
由于有三个阶段,买入,可交易,冷冻期,那么用dp表表示现在为止的最大利润,则有。同上,两个阶段,那么就是dp[0][0]=-p[0],dp[0][1]=0;究其就是个动态规划的问题。未完待续......
2023-10-03 22:31:33
220
原创 算法——双指针
这道题的重点是,如何用最小的操作数,来使其x变为0——也可以看作是用最少的数据个数,来求和得到x。——但是我们可以知道,由于数据是从两端向中间取的,所以每一次的数据取完后,中间的数据仍是连续的。所以我们可以将题目从求和为x的最小数据个数——>求和为sum-x的最多数据个数。由于中间数据是连续的,所以我们可以用双指针来进行遍历查找。期间需要一个循环来进行修正。
2023-09-17 16:58:39
264
1
原创 算法笔记——循环链表
算法题中,会有一种题目让我们去判断链表里的是否有循环。这里就需要我们要用快慢指针来进行搜索,直接提供代码工作原理如下图因为fast始终会比slow快一步,所以在循环里始终会相遇,若没有循环,那么fast就会读取到最后nullptr处,然后终止判断即可。
2023-09-14 12:23:53
249
原创 算法——快乐数
由图可知,其实这也是一个判断循环的过程,要用到快慢指针,且相遇后,若在全为1的循环里,那么就是快乐数,若相遇后不为1,说明这不是快乐数。
2023-09-14 12:22:39
558
原创 C++ 类和对象
面向过程/面向对象C语言是面向过程,关注过程,分析出求解问题的步骤,通过函数调用逐步解决问题C++是基于面对对象的,关注的是对象——将一件事拆分成不同的对象,依靠对象之间的交互完成引入C语言中结构体只能定义变量,但是在C++中,结构体不仅可以定义变量,也能定义函数以栈为例,C++里对于栈的函数可以这样子写://C++struct Stack{ //成员变量 int* a; int top; int capacity; //成员函数——直接将函数与成员变量放在一起定义
2023-07-30 20:23:57
239
原创 Linux基本指令操作
当我们获取公网IP地址后,我们就可以打开xshell。此时会有这样的界面,我们若是想的登陆,则需要输入以下的指令ssh+ 用户名+@+公网IP地址然后会跳出以下的窗口接着输入密码——密码便是先前定好轻量云服务器的密码输入好并且通过成功后,就会出现以下的界面。
2023-07-24 21:40:50
706
2
原创 数据结构——二叉树习题整理总结
1.需要开创一个动态储存的数组,不为空则放入,为空则跳过,然后用递归对其左右子树进行数据的整理。其实就是需要一个树比较的函数,然后将左右子树放入比较,若有一个成立,那么就说明跟子树相同。本质上和比较相同子树是一样的,只不过比较的是对称的子树,改变变量即可。并且左右子树的左右子树也要遵循高度差不超过1的标准,所以需要递归。需要将左右对称的子树进行交换,那么就需要定义一个变量去进行交换。重点是将左右子树与根的比较分开来,然后再进行左右子树的分别比较。重点其实就是将左右子树的高度进行比较,使其高度差不超过1。
2023-07-05 13:41:00
90
原创 数据结构——二叉树的遍历
学习二叉树的结构,由于二叉树的数据存放可以视作是一个数组,那么最简单方式就是遍历。那么二叉树的遍历又是按照某种特定的规定,依次对二叉数中的节点进行相对应的操作,且仅进行一次。
2023-06-29 21:26:18
89
原创 二叉树——堆中大量数据的筛选(Topk)
3.建立后,那么就从文件中一个个读取,若有比第一个数据大的,就进行替换,替换一次后就进行一次向下调整,然后以此往复,每一次比较都会将数组中最小的数据提出来,直到数组中的数据位前k个最大的,最后一次向下调整就会将数组的数据按照升序排放。2.建立数组后,那我们应该先进行建堆,就是将数据放入文件中——在文件中进行小堆的建立,也就是进行数据的排序,最小的数据会在顶处。上篇文章介绍了简要的堆排序,可以实现选取前k个最小/大的数据,如果数据量是1万,甚至是十万以上呢?(此处实现小堆,找最大的前k个)
2023-06-21 18:29:19
154
原创 栈和队列练习——设计循环队列
概念图我们需要两个指针,一个用于标记队伍头部,一个用于标记尾部,且进行遍历且为了表示方便,我们开拓k+1个空间,保存k个数据,那么多出来的空间,用于存放遍历指针rear,且可以进行是否为空/是否满的判断此处,我们选择用数组队列的设计,方便进行数据的循环。
2023-06-04 15:04:11
64
原创 栈与队列练习题——用栈实现队列
首先需要知道,栈是先入后出,队列是先出先出的那么如果想用栈实现队列,那么需要两个栈,一个栈用于放入数据,另一个栈用于删除并且实行其他操作时,将两个栈的数据互换,此时也会实现数据顺序的互换例如实现队列头元素的删除删除时,将pushst中的元素通过栈放入到popst中,此时会变成此时再通过栈的顶部删除,便可以实现队列的头元素删除。
2023-06-04 10:20:17
78
原创 栈和队列练习题——用队列实现栈
首先,我们要知道队列和栈的概念图题目(队列栈:现在我们要用队列实现栈——怎么实现先入后出呢?我们可以用两个队列进行例如删除——可以将q1的元素留下最后一个,其余元素在q1中头出,然后头插放入q2,这不仅保留了数据,还实现的尾部元素删除。
2023-06-03 21:28:09
83
原创 数据结构——队列
typedef struct QueueNode //整体框架,一个元素的结构//结构体指针内又存放着其他数据,为单链表}QNode;//内部结构typedef struct Queue//队列更适合用链式结构去实现,队列的结构//出数据 用QNode修饰,那么说明phead也可以指向下一个元素next和储存data//入数据int size;//记录大小,虽然链表没有大小限制,但是可以方便读取大小,不需要遍历}Queue;
2023-06-03 20:47:08
169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅