自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 排序算法总结

这篇文章包含一些408常考的排序算法的代码实现。

2024-08-07 12:17:27 144

原创 回溯问题总结

输出顺序为:两个全排列A和B,若满足前k−1项对应相同,但有Ak

2024-08-02 13:06:21 1228

原创 图的相关题

【代码】图的相关题。

2024-07-31 23:07:38 293

原创 c++结构体

上如代码没有对结构体定义构造函数,初始化node1时val和next无任何值。可以确保成员变量的初始化:能够为成员变量提供明确的初始值,避免出现未定义的值。在这里的代码中直接对ListNode数据类型进行重新命名为Node。typedef 用来给一个已经存在的数据类型定义新的名称。结构体由关键字struct开头用于区别其他数据类型。不定义构造函数时对结构体必须进行显式的初始化。// 输入一系列数据类型。struct (结构体名字) {结构体内部可以嵌套结构体。

2024-07-31 11:22:25 288

原创 并查集 c++和python具体实现

数据结构-并查集并查集是一种特殊的数据结构,其基本功能就是查询某个编号结点的祖先结点和合并两个结点,将这两个结点加入同一个集合中,至于并查集的含义有很多博客都是有讲过并且给出了很形象的例子来说明这一数据结构,这里不做过多赘述其实这些题目总结一下就是求连通分量的问题,也可以通过dfs来解决,但是并查集作为一种数据结构还是很重要的个人学习过程中的总结,如果有问题希望大佬指出。

2024-07-26 19:43:19 1619

原创 图论 prim算法和kruskal算法

kruskal算法又称为加边法,在手动模拟的过程中,我们会优先选择边权小的边加入集合,然后将这条边的两个点纳入共同的集合中,重复这样的操作,直到将所有边权较小的边选出,同时所有点位于一个集合中结束,此时的生成树为最小生成树,在这个过程中,如果我们想要实现这样的代码,我们需要用到一个特殊的数据结构,对于无向图的两个顶点v,w 如果v,w之间有路径存在,我们称v和w是连通的,如果对于图中任意的两个顶点,这两个顶点均是 连通的,记这张图为G,我们称G是连通的,无向图的极大连通子图成为。

2024-07-23 20:53:25 1266

原创 图论 邻接表和十字链表

一开始很懵啊,为什么连完第一个相邻的结点后直接在这个结点上面直接连上了下一个相邻的结点,后面搞明白了,这个链表只是个物理结构,而非逻辑上的结构,用这个物理结构会减少内存的消耗,具体怎么求看一下上面的转化题就会了。十字链表是出度邻接表和入度邻接表的结合,当然在计算机中也可以定义两个邻接表分别用来表示出度邻接表和入度邻接表,但是这样的内存利用率并不高,于是引入了十字链表,用一张表来结合入度邻接表和出度邻接表。对于一张有向图,先画出他的顶点表,然后先按照画邻接表的方式,画出他的出度邻接表,

2024-07-21 12:24:12 142

原创 二叉树的相关算法

二叉树是一种层次存储的数据结构,其数据结构定义如下。02.试写出二叉树自上到下,自左到右的层序遍历算法。设计一个算法,求先序遍历序列第k个结点的值。01,用非递归的方式求出二叉树的高度。设计一个算法,求二叉树的最大宽度。

2024-07-17 11:48:12 187

原创 2.2链表

07.设有一个长度为n的不带头结点的单链表,且结点值都大于0,设计算法求这个单链表的最大孪生和,孪生和定义为第i个结点值和第n-i-1结点值的和。快慢指针,让快指针先走长链表步数k,k=两个链表长度的差的绝对值,然后两个链表的指针同时移动,当指向的元素相同时,返回结点。04.设在一个带表头结点的单链表中,所有结点的元素值无序,试编写一个函数,删除表中所有介于给定的两个值之间的所有元素。01.在带头结点的单链表中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一。06.判断单链表是否有环。

2024-07-14 11:14:49 135

原创 2.1 顺序表

08.线性表(a1,a2...an)中的元素递增有序且按顺序存储于计算机内,要求设计一个算法,完成用最少时间在表中查找数值为x的元素,若找到,则将其于后继位置相交换,若找不到,则将其插入表中并且使表中元素仍然有序递增。09.给定三个序列A,B,C,长度均为n,且均无重复元素的递增序列,请设计一个时间复杂度上尽可能高效的算法,逐行输出同时存在于这三个序列的所有元素。04从顺序表中删除其值在给定值s和t之间(包括s和t,要求s<t)的所有元素,若s或t不合理或顺序表为空,返回错误信息并退出程序。

2024-07-10 23:08:03 221

原创 c ++ 链表

这个是写了个头文件,下面是我调用的主程序。

2024-07-08 21:40:41 97

原创 广度优先搜索 bfs

但是在多源bfs中,会有多个源头,与上面所说的单源bfs对应,多源bfs就是往湖中丢多个石子,会激起多层的涟漪,但是在程序中不可能同时执行多个bfs,因为程序代码是自上向下执行的,于是我们可以先将目标的源头都先入队,然后一次取出进行bfs,这样也能达到目的,下面会用腐烂的橘子为例,进行解释。广度优先搜索(broad first search)简称bfs,是一种树和图中常用的搜索方式,借助队列先进先出的特性,先将节点入队,之后遍历可以周围联通的区域,加入队列,重复这样的操作,直到队列为空结束搜索。

2024-06-28 21:15:19 549

原创 写点二分算法的吧(1) python 版

二分查找是一种减而治之的思想方法,通过缩小区间范围来降低时间复杂度。

2024-06-06 09:25:23 97 1

原创 滑动窗口 不定长 (1)

思路就是,把相同的元素进行分组,并且记录下标,然后计算出相同元素之间有几个不同元素,在每组里面进行滑动窗口,真的不好想,而且对于我这个小白来说真的有点复杂的。不定长的滑动窗口和最值问题有关,可以先设定窗口的左端点对应数组的0下标,然后移动窗口的右边界,当这个窗口不满足某些条件时,调整参数,移动左边界。虽然这个程序中有两个循环,但是实际上对right 来说 只是遍历了字符串一遍,于是时间复杂度仍然是O(n)的。最优的方案是删除下标 2 和下标 4 的元素。个元素后,返回可能的最长等值子数组的长度。

2024-06-02 16:40:29 443

原创 滑动窗口(定长) (2)

这个题目抽象一下的意思就是给一个长度为k的窗口,在这个窗口在s2滑动时,每个包含的子字符串都包含s1中的元素,其中k为s1的长度。题目的意思抽象一下就是给出长度为k的窗口,要求每个窗口中W的个数,最后对所有窗口中W的个数取一个最小值。这个是类似于python 的伪代码 其中i在窗口中控制的是窗口的左端点而非右端点。起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。返回的是{"a":1,"b":1,"c":1}

2024-06-01 13:58:36 675

原创 滑动窗口(定长)

题目意思就是找出s中所有长度为k的连续子字符串,然后求子字符串中元音字母的数量,最后取一个最大值即可。的单个子字符串中可能包含的最大元音字母数。子字符串 "iii" 包含 3 个元音字母。因此我们给出一个O(n)时间复杂度的方法。先看看暴力做法是什么样的。不好解释,直接上题目。

2024-05-31 23:11:21 336

原创 递归 基于python (1)

实际上在写递归的时候,需要明确自己的函数实现的是什么目的同时明确边界条件,也就是递归出口,这样在实现递归的时候就不会出错,可以抽象成高中数学中的数学归纳法,边界条件就是n=1 时成立的等式,不断使得 1 + 1+ 1 +1+。最后到达n,实际上这个过程就是就是递归中递的过程,而n=1 成立的条件就是递归中的归,也就是出口。递归是一个函数不断调用自己的过程,这个过程包括递 和 归 ,递就是调用自身的过程,归就是程序出口,如果一个递归没有出口,就意味着这个函数会一直调用自己,最后会导致递归超过深度,产生崩溃。

2024-05-30 22:38:00 193

原创 python 数据结构 单链表

有些方法在main中没有进行调用,可以自行尝试,应该是没有什么问题的。链表是一个没有顺序但是一个有一个前后相对位置的数据结构。下面是链表的实现及其相对方法。

2024-05-22 18:19:23 295 1

原创 leetcode 合并区间

首先对整体区间intervals 按照每个Interval 的第一个元素进行排序,然后将第一个区间的第二个元素和下一个区间的第一个元素进行比较,如果第一个区间的第二个元素小于下一个区间的第一个元素,则把下一个区间的第一个元素变为第一个区间的第二个元素,然后比较第一个区间的第二个元素和下一个区间的第二个元素,如果第一个区间的第二个元素大于下一个区间的第二个元素,则把第二个区间的第二个元素变成第一个区间的第二个元素。一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。表示若干个区间的集合,其中单个区间为。

2024-05-18 14:38:53 253

原创 python 桶排序

有一个数组array 对数组array 中的数按照一定的范围分为几类,将每一类放入桶中,再对每一个桶中的数字进行排序,最后将其合并得到有序数组。

2024-05-18 13:26:53 104

原创 python排序方式

【代码】python排序方式。

2024-05-17 13:50:47 188 1

原创 python 单调栈

这是leetcode中的一道题,可以通过维护一个单调递增的单调栈来帮助解决,下面给出代码和解释。如果不存在下一个更大元素,那么本次查询的答案是。

2024-05-16 14:11:28 334

原创 python 维护单调栈来达到某些目的

在维护一个单调增的栈时,可以找到数组array中右边比他大的第一个元素,那么如果想要找到数组array 中右边比他小的元素,则可以通过维护一个单调减的栈来实现目的,代码对数组的遍历均为从前往后遍历。有时候,我们还希望找到遍历到的当前数左边的第一个比他小的数从而达到解决实际问题的目的,那么怎么得到比当前遍历到的数左边第一个比其小的数呢,下面给出代码和解释。若是将数组反转,或者说逆着遍历,也可以找到右边比当前遍历到的元素小的第一个数,此时维护的是一个单调递增的栈,代码如下。

2024-05-15 23:01:27 203

原创 python 单调栈

感觉单调栈仅仅只是为了达到目的而产生的一个副产品,并不是通过构造单调栈而解决问题,是在解决问题的过程中,当问题解决完毕时,产生了这样一个单调栈。,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用。想要找到每个数字右边比他大的第一个数的下标,高效的方法会产生一个单调栈,并且这个栈是递增的(遍历目标数的时候是从前往后遍历)还有leetcode上有一道每日温度的题目,可以通过维护一个单调递增的单调栈来解决。

2024-05-14 22:13:26 166 3

原创 python 实现快速排序

【代码】python 实现快速排序。

2024-05-13 13:09:22 96 1

原创 python 选择排序

选择排序,先取得第一个数字的下边把他看作是最小的,记作m,然后遍历数组中的每一个数字,如果发现有比选取的数字还要小的数,则把该数字的下标记作m,并且交换这两个数字的顺序。

2024-05-13 12:17:31 73

原创 python 实现冒泡排序

冒泡排序,类似于水中的气泡浮上水面的过程,这个过程中,随着水的深度降低,压强减小,气泡会越来越大。冒泡排序就是每次循环都将最大的放在最后一位。

2024-05-13 12:05:12 89 1

原创 写的一个游戏的代码,结合了数据库需要注册账号密码和登录,但是需要mysql 中存在admin_info 这个库,有些地方还需要优化

【代码】写的一个游戏的代码,结合了数据库需要注册账号密码和登录,但是需要mysql 中存在admin_info 这个库,有些地方还需要优化。

2024-04-27 21:44:17 135 2

原创 统计专业 在自学python界面设计这块,写了个用户登录猜数字的小游戏,算是给自己锻炼和总结一下吧,希望有大佬看到指点一下

【代码】统计专业 在自学python界面设计这块,写了个用户登录猜数字的小游戏,算是给自己锻炼和总结一下吧,希望有大佬看到指点一下。

2024-04-24 19:11:00 86

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除