![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
ASZZY
这个作者很懒,什么都没留下…
展开
-
leetcode 2. 两数相加 C语言版
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { struct ListNode* l = (struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode* p = l1,* q = l2, * t = l; ...原创 2018-10-14 13:16:38 · 1635 阅读 · 0 评论 -
226 反转二叉树 C语言版
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1这个题目非常简单,可以使用递归完成。当节点部位空,交换左右子树,为空时,返回。struct TreeNode* invertTree(str...原创 2019-03-29 19:35:52 · 1031 阅读 · 0 评论 -
leetcode 860. 柠檬水找零 C语言版
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入...原创 2018-11-21 20:19:26 · 809 阅读 · 0 评论 -
leetcode 20. 有效的括号 C语言版
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。 这个可以用一个栈来解决,遇到前半个括号就进栈,遇到后半个括号,就出栈,并进行匹配。bool isValid(char* s) { char a[1000]...原创 2018-11-14 21:32:42 · 700 阅读 · 0 评论 -
leetcode 110. 平衡二叉树 C语言版
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null...原创 2018-10-30 20:22:43 · 289 阅读 · 0 评论 -
leetcode 20. 有效的括号 C语言
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。 这个题目可以用辅助栈来解题。当遇到前半个括号出现时进栈。出现后半个括号时出栈进行匹配。bool isValid(char* s) { char a[102...原创 2018-10-24 12:04:46 · 1678 阅读 · 1 评论 -
leetcode 101. 对称二叉树 C语言版
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3这个题可以用递归的方法解决:bool c...原创 2018-10-21 14:35:18 · 550 阅读 · 0 评论 -
leetcode 141. 环形链表 C语言版
给定一个链表,判断链表中是否有环。bool hasCycle(struct ListNode *head) { struct ListNode *p = head,*q = head; if(p == NULL) return false; else { while(1) { if(p-&...原创 2018-10-25 20:33:06 · 528 阅读 · 0 评论 -
leetcode 136. 只出现一次的数字 C语言版
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4此题可以用位运算来解决。异或(^)符号是两位相同时,返回0,不同时,返回1。即1 ^ 1 ...原创 2018-10-20 17:15:30 · 289 阅读 · 0 评论 -
leetcode 21. 合并两个有序链表 C语言版
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4可以通过一次遍历同时扫描两个链表,时间复杂度为O(m + n):struct ListNode* mergeTwoLists(struct List...原创 2018-10-17 16:23:39 · 1690 阅读 · 0 评论 -
leetcode 495. 提莫攻击 C语言版
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。示例1:输入: [1,4], 2输出: 4原因: 在第 1 秒开始时,提莫开始对艾希进行攻击并使其立即中毒。中毒状...原创 2018-10-22 14:44:40 · 704 阅读 · 0 评论 -
leetcode 19. 删除链表的倒数第N个节点 C语言版
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.这个题目可以用一次遍历来完成。定义一个节点向后遍历,当走了n个节点后,第二个节点从头节点出发,两个节点一起向后遍历。遍历结束时,第二个节点的...原创 2018-10-17 14:49:59 · 422 阅读 · 0 评论 -
leetcode 100. 相同的树 C语言版
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2018-10-19 20:43:20 · 494 阅读 · 0 评论 -
leetcode 58. 最后一个单词的长度 C语言版
给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5这道题从后面向前遍历,找到第一个字母开始计数,直到第一个不是字母为止。要考虑只有一个单词的情况。int lengthOfLastWord(char* ...原创 2018-10-19 20:37:38 · 563 阅读 · 0 评论 -
leetcode 4. 两个排序数组的中位数 C语言版
采用时间复杂度O(n),空间复杂度为O(1)的遍历算法:double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) { int i=nums1Size+nums2Size,j,size=0,a=0,b=0,l=0; double s1,s2; if(i%2==0) ...原创 2018-10-15 20:06:20 · 429 阅读 · 0 评论 -
leetcode 70. 爬楼梯 C语言版
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2018-10-18 17:51:40 · 1000 阅读 · 0 评论 -
leetcode 1. 两数之和 C语言版
首先是直接暴力法:时间复杂度为O(n2),空间复杂度为O(1):int* twoSum(int* nums, int numsSize, int target) { int* a = (int*)malloc(sizeof(int) * 2); int i,j; for(i = 0;i < numsSize - 1;i++) { fo...原创 2018-10-15 15:59:57 · 797 阅读 · 0 评论 -
283. 移动零 C语言版
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。遍历数组,如果不是0就复制,是0就继续,最后把零补上。void moveZeroes(int* nums, int numsSize) {...原创 2019-04-01 20:08:31 · 647 阅读 · 0 评论