- 博客(21)
- 收藏
- 关注
原创 寒假总结
在寒假期间,我学到了许多知识,从一开始的对数据结构一无所知到现在初步了解数据结构中的许多知识点,每天坚持8小时的自习确实很累但却也值得 ,一开始 学数据结构时我觉得这个特别难,连代码理解起来都很困难,但随着做题,在题中学习新的知识点,学习新知识点后再去做题,这两种结合使我慢慢对此有了新的理解和认识,在寒假期间 我学习了栈。浅学了一点回溯(学了其中一些经典题型)0-1背包问题和一些动态规划的题型。深搜和广搜也开始明白大概怎么写题目。两个基础知识点 也包括两者的运用。还有其中的最小生成树。
2024-02-23 21:57:26
173
1
原创 数据结构:图
图(Graph)是由顶点的有穷非空集合V ( G ) 和顶点之间边的集合E ( G ) 组成,通常表示为: G = ( V , E ) ,其中,G 表示个图,V 是图G 中顶点的集合,E 是图G中边的集合。
2024-02-22 22:28:15
186
1
原创 单源最短路径 迪杰斯特拉(Dijkstra)算法
Dijkstra(迪杰斯特拉)算法是计算单源最短路径算法,用于计算一个结点到其他所有结点的最短路径。该算法以源点为起始点,不断更新其他点到已经确定距离结点的距离,选取距离最小的结点加入S集合,直到S集合存放有所有的结点除了源点外 每加入一个点(h)进入s集合时 都要比较一下是源点直接到这个点距离近还是源点经过点(h)再由点(h)到这个点近 若后者更近 则更新其数据//接下来先进行初始化操作bool s[n];//用于表示点是否在s集合里i<n;i++){
2024-02-21 22:33:06
207
1
原创 哈希表基础知识
哈希表是根据关键码的值而直接进行访问的数据结构。哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素那么哈希表能解决什么问题呢,
2024-02-19 22:33:28
224
1
原创 24.2.7总结 回溯
什么是回溯法回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯法解决的问题回溯法,一般可以解决如下几种问题:组合问题:N个数里面按一定规则找出k个数的集合 切割问题:一个字符串按一定规则有几种切割方式 子集问题:一个N个数的集合里有多少符合条件的子集 排列问题:N个数按一定规则全排列,有几种排列方式 棋盘问题:N皇后,解数独等等如何理解回溯法回溯法解决的问题都可以抽象为树形结构回溯法递归函数的返回值以及参数 回溯搜索的遍历过程 回溯函数终止条件回溯
2024-02-07 21:01:36
172
1
原创 二叉树基础内容
一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。这棵二叉树为满二叉树,也可以说深度为k,有2^k-1个节点的二叉树。,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。满二叉树:如果一棵二叉树。节点的度:一个节点含有的。
2024-02-06 21:23:58
261
原创 24年2.2总结 最大子序和
遍历 nums,从头开始用 count 累积,如果 count 一旦加上 nums[i]变为负数,那么就应该从 nums[i+1]开始从 0 累积 count 了,因为已经变为负数的 count,只会拖累总和。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。局部最优:当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”,因为负数加上下一个元素 “连续和”只会越来越小。动态规划的基本思想是将一个复杂的问题分解为若干个子问题,通过求解子问题的最优解,来得到原问题的最优解。
2024-02-02 21:54:20
334
原创 24年2.1 总结 kmp算法
前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。next数组就是一个前缀表(prefix table)
2024-02-01 19:26:29
394
1
原创 24年1.31总结(栈和双向队列)
遇乘号(说明两数相乘中乘号前的那个数已经被放入栈中,成为栈顶元素了)就将数乘栈顶元素再放进栈中(以前的栈顶元素要取出来然后再放进乘完后的元素),加号就直接放,因此栈中的数最后都是相加起来,这里还有一些技巧,在匹配左括号的时候,右括号先入栈,就只需要比较当前元素和栈顶相不相等就可以了,比左括号先入栈代码实现要简单的多了!建议要写代码之前要分析好有哪几种不匹配的情况,如果不动手之前分析好,写出的代码也会有很多问题。先来分析一下 这里有三种不匹配的情况,
2024-01-31 21:42:51
537
原创 24年1.30总结 栈
从后往前依次入栈,每次放进去的数都跟栈顶元素比较,如果栈顶元素小于要放进去的这个数,那么就将栈顶元素弹出,循环这个过程,直至栈顶元素大于要放进去的数,则这个栈顶元素就是要放进去这个数后第一个比它大的数。将元素一个个入栈,当栈顶元素等于出栈元素(跟第一个比较)时,则将栈顶元素弹出,然后再继续入栈,将栈顶元素与后面一个出栈元素(第二个)进行比较,以此类推。的栈(stack)对象,该栈用于存储整数(int)类型的数据。方法查看栈顶元素,等等。方法向栈中添加元素,使用。方法从栈中移除元素,使用。
2024-01-30 22:26:19
326
1
原创 24年1.29深搜
深度优先搜索(Depth-First Search,DFS)是十分常见的图搜索方法之一。深度优先搜索会沿着一条路径一直搜索下去,在无法搜索时,回退到刚刚访问过的节点。一条路走到黑。
2024-01-29 20:06:32
137
原创 24年1.28总结 单调队列 滑动窗口 学习队列
因为当一个数移入进去后,如果他大于前面任何一个数,那么他前面的数就都会在进行pop前被移除,因此这个数如果等于单调队列的出口元素,那么就说明到这个窗口要往后移,他位于窗口边沿,往下走就要把它pop掉。取一个长度为k的窗口,一个个的划过去,找出每一个窗口中的最大值和最小值。好了过程懂了,现在就是要搞懂如何用代码实现(还没学会)push(x) -- 将一个元素放入队列的尾部。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。pop() -- 从队列首部移除元素。
2024-01-28 19:01:53
301
原创 24年1.26总结数组相关知识
双指针法:一个指针( i )控制终止位置,另一个指针 ( j ) 控制起始位置,j 先位于开头位置不动, i 不断向后移,直到 i 与 j 之间的数值总和大于s,然后 i 不动,控制 j 向后走,直到满足条件时所需的最小长度。2.双指针法:slow和fast fast用来遍历将要删除的数和不需要删除的数区分开,slow作为数组下标,当fast遇到需要留下的数,slow才会更新。双指针法:两端都来一个指针,比较两个指针所指的数的大小,取大的数优先放进新的数组中。
2024-01-26 17:26:32
189
1
原创 2023.12.24总结
对俩个有序数组进行合并将a,b数组中下标相同的数进行比较,较小的数放入c数组中并且下标值+1;全部比较完后,哪个数组有多的数就全放c数组后边去。
2023-12-24 19:47:49
45
原创 2023.12.17总结
定义:限定仅在表尾进行插入和删除操作的线性表栈顶:线性表允许插入、删除的一端栈底:另一端,不被允许插入、删除的一端操作特性:后进先出空栈:不含任何元素的空表。
2023-12-17 19:48:25
44
原创 2023.11.17总结
一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。如果整数x为质数,那么就不可能写成 x = a * b的形式。所以如果整数x无法被小于等于x的平方根的质数整除,则x为质数。用较大数除以较数,再 以除数和余数反复做除法运算,当余数为0时,取当前算式除数为最大公约数;因为偶数都为2的倍数;所以质数存在奇数当中(2除外);而最小公倍数等于原来的俩数乘积之和除以最小公约数;容斥原理我理解为集合的交并集;2:最大公约数和最小公倍数。
2023-11-19 13:39:07
56
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人