- 博客(23)
- 收藏
- 关注
原创 [c语言]——void ( *signal(int , void(*)(int)) )(int)是什么意思
void ( signal(int , void()(int)) )(int)是什么意思注释:signal 是一个函数声明signal函数的第一个参数是int,第二个参数是函数指针signal函数的返回类型为函数指针signal函数的第二个参数是函数指针,该指针指向的函数参数是int,放回类型为voidsignal函数的返回类型也是一个函数指针,该函指针指向的函...
2018-12-22 12:25:12 2411 1
原创 [c语言]——怎么判断机器的大小端
大小端介绍大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中图中的变量地址是倒着存的,所以可以判断是小端存储怎么判断大小端方法一:#include<stdio.h>#include<stdlib.h>int check...
2018-12-22 12:21:58 546 2
原创 [leetcode]——哪桶水有毒
有1000只水桶,其中有且只有一桶装的含有毒药,其余装的都是水。它们从外观看起来都一样。如果小猪喝了毒药,它会在15分钟内死去。如果需要你在一小时内,弄清楚哪只水桶含有毒药,你最少需要多少只猪?进阶:假设有 n 只水桶,猪饮水中毒后会在 m 分钟内死亡,你需要多少猪(x)就能在 p 分钟内找出“有毒”水桶?n只水桶里有且仅有一只有毒的桶。**分析你现在拥有一头猪,这头猪去喝水,如果他喝...
2018-12-20 00:04:01 3356 3
原创 [数据结构]——判断平衡二叉树(ON解法)
给定一个二叉树,判断它是否是高度平衡的二叉树。一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1O(n^2)解法bool _isBalanced(struct TreeNode* root, int* pDepth) { if (root == NULL) { *pDepth = 0; return true; } int leftDep...
2018-12-18 20:42:05 324
原创 [leetcode]——重建二叉树
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果#include<stdio.h>#include<stdlib.h>#include<malloc.h>...
2018-12-16 15:18:46 156 2
原创 [leetcode]——复制带随机指针的链表
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。ps:要求返回这个链表的深度拷贝/** * Definition for singly-linked list with a random pointer. * struct RandomListNode { * int label; * struct RandomListNod...
2018-12-13 22:37:16 320
原创 [leetcode]——另一个树的子树
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3/ \4 5/ 1 2给定的树 t:4/ 1 2返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。示例 2:给定的树 s: 3...
2018-12-10 21:26:28 305
原创 [数据结构]——二叉树的前序遍历
给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,2,3]void PreOrder(struct TreeNode* root, int* returnSize, int* ans){ if(root != NULL) { ans[(*returnSize)++] = root ->...
2018-12-10 21:17:56 372
原创 [数据结构]——模拟实现堆
头文件#pragma once#include<stdio.h>#include<assert.h>#include<stdlib.h>#include<string.h>#include<time.h>typedef int HPDataType;typedef struct Heap{ HPDataType..
2018-12-09 21:53:40 192
原创 [最长回文串]——最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:“abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。int longestPalindrome(char* s...
2018-12-06 15:43:56 301
原创 [leetcode]——数字转换为十六进制数
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。...
2018-12-06 15:20:51 859
原创 [leetcode]——回文链表
请判断一个链表是否为回文链表。示例 1:输入: 1-&gt;2输出: false示例 2:输入: 1-&gt;2-&gt;2-&gt;1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题方法一:逆置链表解释:回文结构实际上就是将这个链表反转过来还是与原来相同,所以我们可以将链表先进行反转然后与原链表比较,但是我们这里得与原链表比较所...
2018-12-05 15:56:59 257 2
原创 [数据结构]——删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 ListNode* deleteDuplication(ListNode* pHead){ ListNode* cur = pHead; ListN...
2018-12-05 15:38:30 219
原创 [leetcode]——反转字符中的元音字母
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: “hello”输出: “holle”示例 2:输入: “leetcode”输出: “leotcede”使用双指针遍历一遍即可bool checkchar(char c){ return c == 'a' | c == 'e' | c == 'i' | c == 'o' |...
2018-12-04 14:18:26 581
原创 [leetcode]——删除链表的倒数第K个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.struct ListNode* removeNthFromEnd(struct ListNode* head, int n){ ListNode*...
2018-12-03 18:15:13 1041
原创 [leetcode]——环形链表||
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。说明:不允许修改给定的链表。代码如下struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB)//代码比较长其实//只有三部分{ int lenA = 0,lenB = 0,gap = 0;//...
2018-12-02 21:35:27 233
原创 [数据结构]——环形链表
给定一个链表,判断链表中是否有环拿到这道题其实我相信很多同学已经看过官方的解答了快慢指针法:在返回单链表的中间节点其实我们就已经使用过这个办法了,让fast指针一次走俩步,让slow指针一次走一步。你可以假想俩个人同时在操场上跑步,快的那个人假设一直比慢的快,那么在不久后他们肯定会相遇,于是判断有没有环有了下面代码bool hasCycle(struct ListNode *head) {...
2018-12-02 20:40:56 285
原创 [leetcode]——相交链表
编写一个程序,找到两个单链表相交的起始节点。例如,下面的两个链表:A: a1 → a2↘c1 → c2 → c3↗B: b1 → b2 → b3在节点 c1 开始相交。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存...
2018-12-02 20:20:28 140 1
原创 [数据结构]——模拟实现双向循环链表
此次工程还是使用了3个源文件list.h(头文件源代码),main.c(实现接口的具体代码),list.c(单链表逻辑)list.h#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int LTDataType;typedef struct Li...
2018-12-02 19:50:05 482
原创 [leetcode]——返回单链表中第k个节点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next...
2018-12-01 13:09:54 1697
原创 [leetcode]——移除链表元素
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5struct ListNode* removeElements(struct ListNode* head, int val){ struct ListNode* cur = ...
2018-12-01 12:48:59 401
原创 [数据结构]——c语言实现单链表
此次工程还是使用了3个源文件slist.h(头文件源代码),slist.c(实现接口的具体代码),test.c(单链表逻辑)slist.h#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int SLTDataType;typedef struct...
2018-12-01 12:29:35 429
原创 反转单链表
反转一个单链表。示例:输入: 1-&amp;amp;amp;amp;gt;2-&amp;amp;amp;amp;gt;3-&amp;amp;amp;amp;gt;4-&amp;amp;amp;amp;gt;5-&amp;amp;amp;amp;gt;NULL输出: 5-&amp;amp;amp;amp;gt;4-&amp;amp;amp;amp;gt;3-&am
2018-12-01 12:17:36 1309 7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人