C数据结构
C语言数据结构
柳瘦
大自然的搬运工
展开
-
C基础-输入输出
1、printf("%d",d),scanf_s("%s", s, MAXLEN);规定符用法介绍,抄的百科2、sprintf()将数据格式化输出到字符串buf里面sscanf()读取格式化的字符串ip中的数据没想到还可以这么玩unsigned long ip2long(char *ip){ unsigned long a, b, c, d; //必须使用ul,否则左移24位...原创 2020-03-14 19:32:01 · 206 阅读 · 0 评论 -
C数据结构-图-记录父亲节点
leetcode742题,二叉树最近的叶节点。给出某二叉树,给出某个值k,找到最接近的叶子节点。做发可能不是真正的图,算是个开头吧,有缘更新。1、因为每个节点的值都是独一无二的,可以申请1000的数组,来存值为K的节点的关系:包括父亲是谁,是否是叶子节点,当前距离顶点的距离是多少2、找出每个节点到顶点的距离,父亲是谁,遍历的时候顺便标记是否是叶子节点3、遍历出叶子节点,找出当前节点i和k...原创 2020-03-21 22:28:41 · 422 阅读 · 0 评论 -
C数据结构-字符串操作升级版
leetcode271题,字符串的编码与解码。请你设计一个算法,可以将一个字符串列表编码成为一个字符串,并且可以在接收端被解码回原来的字符串列表。之前写过C数据结构-字符串操作 的故事,这个算是一个应用类吧。1、取了%号来做识别长度,用strsize%len0%str[0]len1%str[1]…这样的方式来拼接,保证字符串前面都是数字和%的方式,来告诉对端当前的size,这个思想比较灵魂,...原创 2020-03-21 18:53:47 · 230 阅读 · 0 评论 -
C数据结构-并查集升级版
leetcode582,杀死进程。之前的帖子C数据结构-并查集介绍过并查集的用途,这道题是升级版本,每个进程有个父进程,指定杀死节点kill,那么他下面的子子孙孙也会被一并杀死。需要给出啥子某个指定节点后,具体哪些节点会被杀死。1、在查找团队大哥的函数上需要优化。**如果发现某个小弟大哥是kill了,就不要继续向上找了,到此为止。**这样保证记录的数组中,一旦大佬是kill的,都标识成了kill...原创 2020-03-14 09:24:59 · 114 阅读 · 0 评论 -
C数据结构-前缀和与差分
leetcode289题,生命游戏。思路:把数组边界扩充。leetcode1109题,航班预订统计。思路:先存前缀,最后去求和。参考如下作者的算法:https://leetcode-cn.com/problems/corporate-flight-bookings/solution/qian-zhui-he-fa-python-java-shi-jian-fu-za-du-on-b/i...原创 2020-03-09 19:23:07 · 303 阅读 · 0 评论 -
C数据结构-线段树
leetcode307题,区域和检索 - 数组可修改。作者大牛,讲的特别好https://www.bilibili.com/video/av47331849/题目需求分为三个部分1、提供一个数组arr/nums–构造线段树node2、更新数组的值–更新线段树3、对某个区间求和–对线段树进行求和线段树的好处是,保证更新和求和的时间是logn,均匀的。线段树的特征是:1、arr的值存在...原创 2020-03-06 12:13:56 · 137 阅读 · 0 评论 -
C数据结构-树相关的递归
leetcode98题,验证二叉搜索树。思路是递归的,但是从树的角度介绍吧简单来说就是把所有异常场景找出来1、如果当前节点为空,那么就是ok的2、如果当前节点左子树不为空,那么要看左子树最大的数字跟当前节点比较;3、如果当前节点右子树不为空,那么要看右子树最小的数字跟当前节点比较;4、依次确认该节点的左右节点是否满足要求。bool isValidBST(struct TreeNode...原创 2020-03-03 20:27:33 · 172 阅读 · 0 评论 -
C数据结构-队列
leetcode102题,二叉树的层次遍历队列的思路如下:1、有head、tail2、入队靠tail,出队靠head3、如果每轮需要出队,那么把tail-head存下来,做一个for循环!!!非常重要int gets_tree_row(struct TreeNode* root) { if (root == NULL) { return 0; } ...原创 2020-03-03 19:55:34 · 83 阅读 · 0 评论 -
C数据结构-数组指针
leetcode102题,二叉树的层次遍历楼主太难了,指针傻傻分不清,不单独写一篇不足以泄愤!!int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes){一、返回一个int ** ,理解是一个二维数组,步骤如下:1、申请一维指针空间,用来存行号 int ** res = (i...原创 2020-03-03 19:13:53 · 240 阅读 · 0 评论 -
C数据结构-链表
leetcode328题,奇偶链表。https://leetcode-cn.com/problems/odd-even-linked-list/submissions/ 就很纠结怎么表达,next把头都弄晕了。另外,vs是调试神器。1、遍历某个链表,需要有head和current,current表示当前所在位置。2、对某个链表修改,需要有head和tail,tail表示在此处进行添加信息...原创 2020-02-07 19:10:38 · 151 阅读 · 0 评论 -
C数据结构-栈
leetcode42题,接雨水。刷题刷久了,发现这个东西费智商啊,脑子里没有想清楚怎么计算。思路如下:1、每一格都算墙高,0表示墙高度为02、如果当前墙比栈顶小,那么入栈,因为没有接雨水的能力。3、如果当前墙比栈顶大,那么说明可以收割了,新的栈顶变成为h1就收割栈顶的这块墙h,收割h其实是要关心与h1的计算收割的大小是:(当前墙和h1的最小值 - h的高度)*(h1与当前墙的距离)...原创 2020-02-06 09:16:41 · 101 阅读 · 0 评论 -
C数据结构-前缀和+双指针+超难
leetcode862题,和至少为 K 的最短子数组。用p[i]用来表示前i-1个元素的和。这道题目的是求满足p[y]-p[x]>=K的情况下的最小y-x。看了官方解析,用C的实现照搬一下,是一个没有灵魂的搬运工。如下是理解:用一个队列把“可能的x”存起来,每次都去看当前y-x的比较值,看下当前的长度大小。用queue存储可能的x。这个x的特点是:1、不会是负数;2、如果对某个y,y-...原创 2020-02-03 21:07:45 · 167 阅读 · 0 评论 -
C数据结构-双指针+滑窗
leetcode986题,区间列表的交集。两个指针i和j来控制挪动即可。int** intervalIntersection(int** A, int ASize, int* AColSize, int** B, int BSize, int* BColSize, int* returnSize, int** returnColumnSizes){ int i, j; int ...原创 2020-01-15 13:59:37 · 232 阅读 · 0 评论 -
C数据结构-字符串操作
leecode824题,山羊拉丁文具体细节:1、strcat函数–百科char d[20]=“Golden”;char s[20]=“View”;strcat(d,s);//打印dprintf("%s",d);输出 d 为 GoldenView (中间无空格)2、strtok函数函数第一次调用需设置两个参数。第一次分割的结果,返回串中第一个 ‘,’ 之前的字符串第二次调用该函...原创 2020-01-13 19:10:26 · 405 阅读 · 0 评论