自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前缀和(三)

先开辟一个全局变量的 s 二维数组,这个二维数组开成 s [ 5010 ] [ 5010 ] ,由于 ai bi , ci 的数据都会出现从0开始这种情况,那。1(原因和上面一样)

2024-03-25 03:30:00 594

原创 前缀和 (二 )

前提:q ->存放初始数据,s-->存放的是前缀和。

2024-03-24 18:00:26 429

原创 前缀和(一)

假设有一个数组为a [ n ] , 另一个数组为s [ n ] .

2024-03-24 16:22:43 970

原创 双向队列广搜

isited[a][b] + visited[t.x][t.y] 是否等于3时,我。这是因为:如果放在后面,那么当从起点开始的路径与从终点开始的路径面对面时,当我们已起始点和终点时,我们可以采用双向队列广搜去解决问题。(x1,y1)——表示起点,(x2,y2)——表示终点。: g数组里面存放着输入数据,dist[i][j]表示当。,程序就不会执行判断是否为3,就无法返回正确答案。

2024-03-19 08:14:05 840

原创 大数(long long 也存不下)求余数

现在有一个数n为:12345678901234567890123456789012345678901234567890,要你求。

2024-03-11 01:42:26 336

原创 leetcode刷题(模拟问题)

连续重复字符是指。

2024-02-13 20:18:59 939 2

原创 位运算+leetcode ( 2 )

那么数据类型为int,就可以进行位图思想。

2024-02-12 15:33:38 868 2

原创 位运算+leetcode(1)

有n个巢,和n+1个鸽子,那么至少会有一个巢鸟的数量>1。1.给一个数n, 判断它的二进制表示中的。3.给一个数n, 将它的二进制表示中的。2.给一个数n, 将它的二进制表示中的。表示的是:从右往左出现的第一个数字1。以下都是针对数字的二进制进行操作。,同时去统计一下总共进行了几次。,然后再放到数组里去。

2024-02-12 10:13:26 1829 2

原创 算法技巧:双指针总结(2)

这里的基本思路与题二一样,只是比较对象换了,操作换了。,我们最终要找到的是最大值。

2024-01-26 00:50:07 1768 1

原创 算法技巧:双指针总结(1)

首先定义两个变量des和cur,用cur去遍历整个数组,我们要实现[0,des]为非零,[dest+1,cur-1] 为零,[cur,n]为待处理数据,就拿[0,1,0,3,12]来说明,我们要实现数组分块的效果.这里我们也采取一样的思路,定义一个快指针fast,一个慢指针slow,cur++,去找非0的数值,直到找到第一个非0的数,就停下来,,有n个巢,和n+1个鸽子,那么至少会有一个巢鸟的数量>1。定义两个指针,一个为slow,一个fast,我们让。注意:这里所指的双指针在某一些题目中是指针,但。

2024-01-25 23:50:49 1400

原创 day 1

这道题的关键点,主要在于边界值是否要取。2.当我们选择的是左闭右开的区间。

2024-01-24 16:02:30 347

原创 快速排序 归并排序【递归实现】

然后我们将区间分为 [0,m-1] [m+1,n-1] ,在对两个区间分别进行单趟排序。该算法是采用分治法 (Divide and Conquer)的一个非常典型的应用。找到后,那么begin就暂停往前,并且交换keybegin的数据。begin是最前面位置的下标,end是最后一个位置的下标。若将两个有序表合并成一个有序表,称为二路归并。即先使每个子序列有序,再使子序列段间有序。将已有序的子序列合并,得到完全有序的序列。并返回现在相遇的位置下标 m,end往前去找比key小的。们从小往大依次放入tmp。

2023-12-01 12:59:27 896 1

原创 直接插入,希尔,选择排序

创建2个变量begin和end,初始化两者begin=0 end=n-1(n为数据的数量),先假设最大数据的下标为begin,最小的数是下标为end的数,然后通过遍历数组,找到最大的和最小的,然后将最小的放在最后一个位置,将最大的数据放在第一个位置;的, 然后把后面的数字与其进行比较,如果小于第一个数字,两者就交换,完成该步操作后,前2个数据有序的,然后我们在将第3个数字,与前面两个数字从后往前去比较,如果。然后,对gap的值进行改变,再次重复上述分组和排序的工作。,那么这个位置,就是它应该在的位置。

2023-11-30 20:51:02 841

原创 二叉树的最大深度,判断两个二叉树是否相同,对称二叉树,另一棵树的子树【C语言】

这里采用递归来解决,这里是先判断一层是不是。如果是,那么就继续判断该层的下一层是不是,依次往下判断。如果该层不是,那么就返回false,并且也不会继续往下面判断。我们最终要判断这整个树是不是,并非某一部分是不是。思路分析:这里递归中终止的条件是:当进入该函数的节点为NULL时,则递归不再往下了,而是开始进行返回。先判断这颗树为空不,若为空,那么就返回true;否则,就返回false。将一个大的树分成两个小树,进行处理,再对小树进行同样的划分。

2023-11-24 10:51:25 370 1

原创 Top k问题【C语言 堆解决】

如果下标为k的数据进堆了,此刻观察根节点的左右子树,发现左右子树是小堆,那么就满足了向下调整算法的要求,用向下调整算法来处理。完成上述处理后,我们在不断的将新的堆顶(根节点)的数据与数组后的数据进行比较,交换,调整。(这里每处理一次后,若插入的数据大,则堆里最小的数据被弄出去)为例:建一个数据数量为k个的小堆,若数据大于小堆的堆顶数据,则将2者数据进行交换,然后在进行向下调整,,建好堆后,我们将数组里下标为k的数据与此时堆顶的数据进行比较,小堆的性质:小的数据在堆顶,大的数据在后面。—1.找到n个数据中。

2023-11-20 10:32:35 39 1

原创 堆的实现 堆排序 【用C语言实现】

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。根节点:该节点前面没有前驱节点 例如上图的A是根节点节点的度:一个节点所含有的子树个数为该节点的度 如上图中A的度是6叶节点:度为0的节点 如上图的B C H I P....等都是叶节点树的度:一颗树中,最大的节点的度是树的度 如上图:树的度为6树的深度或高度:树中节点的最大层次 如上图:树的高度为4。

2023-11-19 23:04:07 50 1

原创 实现循环队列【C语言】

假设若开辟k个空间,这就会造成无法判断队列中什么时候满和空,因为当出现front=rear时,即有队列为空的情况,也有队列为满的情况。出现rear=front时,队列为满的情况,最开始初始化后,队列为空 ,那时也满足rear=front,那么无法分清楚空和满的情况。front是队列里第一个元素的下标(这里的第一个并不是常规顺序上的第一个,而是数组里剩余数据中第一个进入的数据),当出现3号这种情况时,在往里插入一个数据,rear若还是按照物理上的结构往后一步,则会出现数组越界访问,的办法来去解决这个问题。

2023-11-13 20:35:14 49

原创 用队列实现栈【c语言+leetcode】

初始化栈就意味着:要先创建好一个类型为Mystack的栈变量,创建好后,再将该变量中的两个队列变量给初始化(这里可以直接调用前面创建好的函数QueueInit)。先找到不为空的队列,然后在返回它的该队列的队尾所对应的数据 ,这里可以直接调用函数QueueBack来找到这个数据。细节:由于栈的数据通常只存放在一个队列里,故我们往空队列里进行数据的挪动.,然后,我们要将一个队列q1里的最后一个(第n个)数据给弄出去,可以先将。这里要求用队列实现栈的本质是,用队列的性质来实现栈的特点(后进先出)。

2023-11-12 21:34:18 43 1

原创 ​用栈实现队列【C语言+leetcode】

此时栈一 ,有五个数据,现在要实现将1给删除掉,由于栈要求要后进先出,那么如果我们将数据 全挪到栈2中,因为栈的特点,故我们先将5给挪到栈2的栈底,然后依次挪,挪到最后的时候,1就在栈2的栈顶,此时可以直接调用栈的函数进行删除,可以将栈2中的数据全删除掉。要插入数据时,不能插入到栈2中,如果插入到栈2,那么由于栈的性质,会插到数据1的前面,那么就打乱了顺序,故我们要插,只能插到栈1中,故将栈一命名为pushST。由于队列是由两个栈来构建的,判断是否为空,即判断两个栈是否为空。故将栈2命名为 popST。

2023-11-12 21:33:51 39 1

原创 栈和队列详解

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out,即后进先出)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈,出数据也在栈顶。1.2用来实现栈的结构这里采用的是数组结构来实现的,因为数组实现栈的尾上插入时更方便,不需要创建指针,只要扩容一下就行。但是用链表也是可以的。数组的哪一端用来做栈顶呢?

2023-11-12 11:47:55 55

原创 解释为啥单链表中用2级指针,而双链表用1级指针

(plist)来访问,将链表里的结点赋给plist(则此处我们已经要改变plist,将第一个头结点赋给plist),故在此处我们应该将plist的地址给传进去。由于plist是一个一级指针,故传地址时要用2级指针来接受该地址。双链表中有哨兵位头结点,故我们不需要用外来的结构体指针变量来访问,可以借助自身的头结点就可以了。来访问链表,直接借助哨兵位头结点去访问。单链表中我们要借助之前创建好的。可以不用通过创建一个结构体指针。

2023-11-10 10:10:35 91 1

原创 链表leetcode练习

当cur->val=val时,又要讨论情况来写,先要判断满足cur->val=val该条件的,cur是否为head,若为head,则为头删,返回的时空的链表;判断结束后,在比较2个链表的数据大小,每次只从各自链表中拿一个来比较,如果第一个链表小,则将其放在后面,大的放前面,俩者在相连一下。法二:用快慢指针来解决,(要先判断一下head是否为空)先让fast指针走到第k个指针处去,然后再让fast和slow每次都往后走一步,直到fast为空就结束,并返回slow指针,它就时要找的。当cur->val!

2023-11-09 20:06:54 41 1

原创 详解双链表

双向意味:该链表中的任何一个结点都可以访问其前面和后面的结点。要是现这个功能,则该链表中要有2个指针变量,一个。

2023-11-06 20:55:01 70 1

原创 详解顺序表和单链表

;

2023-11-05 14:47:19 133 2

原创 leetcode.1 消失的数字题解

首先先用排序将数组里的元素排成一个升序(或者降序),(这里讲的是升序)然后在用i去遍历整个数组,判i是否等于nums[i] , 若相等则就返回i, i即是数组中丢失的数字;法2:先让tmp与0到numssize的数进行抑或,然后在让tmp与数组nums中的数字抑或,则最终消失的数字就是a。即C^0^1^5^8^9^0^1^5^9。C先与a中的数据抑或,在与b中数字进行。下面我们将用抑或操作符来解决这个问题。举个例子:找到b中消失的数字。[面试题 17.04.即这里消失的数字是8。

2023-10-31 17:08:48 123 1

空空如也

空空如也

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

TA关注的人

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