自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构——队列

队列队列是一种先进先出的顺序表,只允许在表的一端进行插入,在另一端进行删除数据队尾:队列中允许插入数据的一端队头:删除数据的一端队列的实现对于队列需要进行头插和尾删,所以采用链式结构更加灵活和方便(一)队列的创建//创建队列void QueueInit(Queue* pq){ assert(pq); pq->head = pq->tail = NULL;}(二)队列的销毁//销毁队列void QueueDestroy(Queue* pq){ assert(p

2022-05-17 22:59:20 1061 26

原创 蓝桥杯刷题

题目一:货物摆放现在设这个立方体的长宽高为a,b,c,即必须满足abc=n,有这个式子可得,啊a,b,c都是的因子,因此这道题可以转化为找到n的因子,在n的因子中如果三个因子相乘为n,则符合要求,现在考虑如何找到这个数的因子,刚开始考虑的时候,是将小于n的数遍历一遍,如果相除的余数为0,则是该数的因子,如果数小可以采用,但是如果数像这道题中这么大,计算机跑起来会花费很多时间,因此我们可以考虑求到根号n,也就是说如果i是n的因子,则n/i也是n的因子所以大致思路就是,定义一个变量i,在i*i<=n

2022-04-05 21:27:59 707 6

原创 leetcode——另一个树的子树

对于该问题,判断一个数是否为另一个树的子树,最好的方法就是我们根据树的顺序,依次和所给的数进行比较,也就是说将这个树拆分成若干个子树,依次和所给的树进行比较,如果存在相同的树,则所给的树是该树的子树。在这里我们需要调用的是判断两个树是否相等的函数。具体比较过程如图所示:如图所示,先是所给的树与该树整体进行比较,如果不相等,则将该树分为左右两个子树,再依次进行比较如图,该树分为左右子树,通过比较,所给的树与左子树相等,因此所给的树是该树的子树该示例所给的数据较少,若是整个树比较庞大,则将子树再分.

2021-05-07 19:16:53 395 12

原创 Leetcode——对称的二叉树

判断一棵二叉树是否为左右对称,及从根部开始看是否在左右相对称的节点上的值是否相等,因此我们需要将这个二叉树从上到下依次遍历。在前序,中序,后序三种顺序结构中,要选择前序遍历。为什么呢?因为要是比较这个二叉树是否对称,就不是单纯的依次递归,而是从根部开始左右子根依次遍历,如果在开始的时候两个节点对应的值就不相等,那么我们就没有再继续遍历的必要了。如果选择其他的遍历方法,那么就是遍历以后再进行比较,就会比较麻烦。在根部比较左右子根,如果相同,则继续向下比较,继续向两个子根向下如图,将第二层的左子根.

2021-05-07 15:25:48 566 10

原创 leetcode——相交链表

在找两个链表相交的节点,首先要考虑的是这两个链表是否相交,若是不相交则返回空指针,如果相交,则找到相应的节点返回。对于这种节点问题,还需要考虑极端情况,加入其中一个链表是空指针怎么办,那此时就更不可能有相交的节点了,仍是返回空指针如图:(一)类比于顺序表的问题,对待这个问题我们最简单粗暴的方法就是将两个链表中的节点依次比较,这种方法思路虽然简单,但是执行起来比较复杂,假设A链表有M个节点,B链表有N个节点,这种方法下来的话,比较次数过多,时间复杂度是0(M*N)(二)那么如何判断两个链表是否有相交.

2021-04-11 16:43:00 1026 5

原创 leetcode——链表的中间节点

对于这道题,首先想到的最简单的思路就是统计节点的个数,再除以二就是中间节点的位置,但是这种思路比较麻烦,因此这道题采用快慢指针的思路。分别定义两个指针同时指向头节点,一个是快指针fast,另一个是慢指针slow,两个指针顺着链表的顺序依次向后但是slow一次向后运行一个节点,fast一次向后运行两个节点,因此当fast把整个链表都跑完的时候,slow正好停在链表的中间节点,如图示例:如图所示两个指针按照要求一次向后访问链表,当fast指向最后一个结点的时候停止,此时slow指向的是中间节点,因此我们.

2021-04-10 16:50:23 1232

原创 leetcode——移除链表元素

思路一:不存在哨兵头结点时该题为链表中数据的删除,即将符合条件的节点释放掉,将剩余节点重新连接起来,因为不只是将需要删除的节点释放掉。而且要将该节点的前后两个节点连接起来,因此不能单纯地找该节点,同时应该找前一个节点,按照以前的思路,定义一个指针pre,在cur依次向后判断的时候,跟随充当目标节点的前一个节点这样依次向后排查,直到cur指向空指针停止但是忽略了一个问题,万一第一个节点就需要删除如图,若是第一个节点就需要删除,则将cur释放之后,在pre与next连接的过程中,因为pre此时是空.

2021-04-10 11:57:17 1767 9

原创 leetcode——旋转数组

思路一:由该题的解题示例可以想到的最简单的一种思路将数组最后一个元素取出,把剩余元素依次向右移动,最后将取出的最后一个元素放到数组的首位,要进行多少多少次数组旋转,就进行多少次操作void rotate(int* nums, int numsSize, int k){int temp=0;int i=0;int m=k%numsSize;for(i=0;i<=m,i++){ temp=nums[numsSize-1]; for(int j=numsSize-2;j&.

2021-04-09 18:50:07 2906 9

原创 leetcode--合并两个有序数组

思路一:其实对待多个数组的数据处理问题,最简单粗暴的方法就是新建一个数组,将处理后的数据存放到新开辟的数组中,对待此问题,可以新建一个数组,然后逐个比较数组nums1和nums2中的元素,将小的数存放到新数组中,然后再继续对比。直到将元数组中的元素都存放到新数组中。但是要注意一个问题,就是当一个数组中的元素已经全部都存放到新建的数组中的时候,程序会跳出循环,此时另一个数组中仍然还剩余元素,现在要做的就是将剩下的元素依次存放到新数组中,但是仍然需要注意,问题问的是存放到数组nums1中,所以在程序的最后要.

2021-04-08 17:45:12 3247 16

原创 结构体内存对齐

结构体内存对齐(一)结构体内存对齐的规则1.第一个成员在与结构体偏移量为0的地址处2.其他成员变量要对其到某个数字的整数倍的地址处注意:对齐数=编译器默认的一个对齐数与该成员大小的较小值3.结构体总大小为最大对齐数的整数倍4.如果嵌套了结构体的情况下,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的总大小就是所以最大对齐数(含嵌套结构体的对齐数)的整数倍(二)结构体内存对齐的计算1.单个结构体内存对齐#include<stdio.h>#include<stddef

2021-03-08 22:30:10 1944 3

原创 2021-02-18

数据类型1.内置类型例如:charintshortlonglong longfloatdouble(1)整形类型中分为有符号整形和无符号整型,如下:signed charunsigned charsigned intunsigned intsigned shortunsigned shortsigned longunsigned long(2)浮点数类型分为单精度浮点型和双精度浮点型:floatdouble2.构造类型数组类型枚举类型enum结构体类型str

2021-02-18 09:59:37 308

原创 2021-02-16

查找有序数组中的具体数字n方法一:逐个比较法int main(){ int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int sz = sizeof(arr) / sizeof(arr[0]);//siaeof(arr)计算出的是整个数组所占的字节大小,即10*4=40,sizeof(arr[0])计算出的是数组中第一个元素所占字节的大小,即为4,所以用所有元素所占字节的大小除以一个元素所占字节的大小即为数组中元素的个数。 int i =

2021-02-17 17:05:32 344

原创 2021-02-16

计算1-3的阶乘的和 int i = 0; int sum = 0; int tep = 0; int n = 0; for (n = 1; n <= 3; n++) { tep = 1; for (i = 1; i <= n; i++) { tep *= i; } sum += tep; } printf("%d", sum); return 0;}注意:在计算i的阶乘的for循环中,因为每次计算完之后tep即为i的阶乘,但是每次循环开

2021-02-16 21:44:13 92

原创 2021-02-16

计算n的阶乘include<stdio.h> int main() int i = 0; int tep = 1; int n = 0; scanf("%d", &n); for (i = 1; i <= n; i++) { tep = tep*i; } printf("%d", tep); return 0;}

2021-02-16 21:09:08 64

空空如也

空空如也

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

TA关注的人

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