
LeetCode
段刘昌
这个作者很懒,什么都没留下…
展开
-
leetcode 55. 跳跃游戏 C语言 贪心法
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,...原创 2020-05-07 23:10:28 · 531 阅读 · 0 评论 -
leetcode 125. 验证回文串 C语言
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falsebool isPalindrome(char *s){ int len = ...原创 2020-04-25 23:37:04 · 447 阅读 · 0 评论 -
leetcode 409. 最长回文串 C语言
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。#define ASCII_LETTER_SIZE 5...原创 2020-04-25 23:35:59 · 480 阅读 · 0 评论 -
leetcode 389. 找不同 C语言
给定两个字符串 s 和 t,它们只包含小写字母。字符串t由字符串s随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例:输入:s = "abcd"t = "abcde"输出:e解释:'e' 是那个被添加的字母。char findTheDifference(char *s, char *t){ int len; ...原创 2020-04-25 23:34:48 · 434 阅读 · 0 评论 -
leetcode 53. 最大子序和 C语言
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。int maxSubArray(int* nums, int n...原创 2020-04-25 23:33:32 · 361 阅读 · 0 评论 -
leetcode 171. Excel表列序号 C语言
给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1示例2:输入: "AB"输出: 28示例3:输入: "ZY"...原创 2020-04-13 23:19:51 · 568 阅读 · 0 评论 -
leetcode 172. 阶乘后的零 C语言
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释:3! = 6, 尾数中没有零。示例2:输入: 5输出: 1解释:5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为O(logn)。int trailingZeroes(int n){ int count = 0; // 2 * 5 =...原创 2020-04-13 23:18:47 · 294 阅读 · 0 评论 -
leetcode 80. 删除排序数组中的重复项 II C语言
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度...原创 2020-04-13 23:17:38 · 240 阅读 · 0 评论 -
leetcode 260. 只出现一次的数字 III C语言
给定一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]注意:结果输出的顺序并不重要,对于上面的例子,[5, 3]也是正确答案。你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?/** * Note: The returned array...原创 2020-04-12 20:33:16 · 292 阅读 · 0 评论 -
leetcode 112. 路径总和 C语言
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2020-04-12 20:32:11 · 372 阅读 · 0 评论 -
leetcode 83. 删除排序链表中的重复元素 C语言
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3/** * Definition for singly-linked list. * struct ListNode { * int...原创 2020-04-12 20:30:43 · 311 阅读 · 0 评论 -
leetcode 415. 字符串相加 (大数相加)C语言
给定两个字符串形式的非负整数num1 和num2,计算它们的和。注意:num1 和num2的长度都小于 5100.num1 和num2 都只包含数字0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式。双指针法较短的字符串高位补0#define MAX_LEN 5102cha...原创 2020-04-09 23:18:22 · 412 阅读 · 0 评论 -
leetcode 1071. 字符串的最大公因子 C语言
对于字符串S 和T,只有在 S = T + ... + T(T与自身连接 1 次或多次)时,我们才认定“T 能除尽 S”。返回最长字符串X,要求满足X 能除尽 str1 且X 能除尽 str2。示例 1:输入:str1 = "ABCABC", str2 = "ABC"输出:"ABC"示例 2:输入:str1 = "ABABAB", str2 = "ABAB"...原创 2020-04-01 21:16:48 · 444 阅读 · 0 评论 -
leetcode 876. 链表的中间结点 C语言
给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans....原创 2020-03-31 22:42:08 · 429 阅读 · 0 评论 -
leetcode 35. 搜索插入位置 C语言
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0...原创 2020-03-21 21:34:21 · 706 阅读 · 0 评论 -
leetcode 515. 在每个树行中找最大值 C语言 bfs
您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9输出: [1, 3, 9]/** * Definition for a binary tree node. * struct TreeNode { * int val;...原创 2020-03-15 11:00:10 · 417 阅读 · 0 评论 -
leetcode 513. 找树左下角的值 C语言 bfs
给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7注意: 您可以假设树(即给定的根节点)不为 NULL。...原创 2020-03-14 21:18:00 · 257 阅读 · 0 评论 -
leetcode 102. 二叉树的层次遍历 C语言 bfs
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]/** * Definition for a binary tree...原创 2020-03-14 21:16:35 · 929 阅读 · 0 评论 -
leetcode 111. 二叉树的最小深度 C语言
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2./** * Definition for a binary tree...原创 2020-03-14 21:14:35 · 348 阅读 · 0 评论 -
leetcode 面试题 04.02. 最小高度树 C语言
给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5以排序...原创 2020-03-14 21:06:28 · 408 阅读 · 0 评论 -
leetcode 450. 删除二叉搜索树中的节点 C语言
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的key对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key = 3...原创 2020-03-13 21:18:20 · 267 阅读 · 0 评论 -
84. 柱状图中最大的矩形 C语言
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。示例:输入: [2,1,5,6,2,3]输出: 10最终的结果肯定是至...原创 2020-03-11 23:01:55 · 763 阅读 · 0 评论 -
leetcode 50. Pow(x, n) 快速幂 C语言
实现pow(x, n),即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例2:输入: 2.10000, 3输出: 9.26100示例3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 <x< 100.0n是 ...原创 2020-02-27 21:19:55 · 441 阅读 · 0 评论 -
leetcode 39. 组合总和 C语言
给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。解集不能包含重复的组合。示例1:输入: candidates = [2,3,6,7], target = 7,所求解集为:...原创 2020-02-07 21:41:51 · 566 阅读 · 0 评论 -
leetcode 77. 组合 C语言
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]/** * Return an array of arrays of size *returnSize. * The sizes of the...原创 2020-02-04 10:58:44 · 674 阅读 · 1 评论 -
leetcode 617. 合并二叉树 C语言
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:输入: Tree 1 Tree 2 ...原创 2020-02-04 10:56:45 · 381 阅读 · 0 评论 -
leetcode 2. 两数相加 C语言
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...原创 2020-02-04 10:50:03 · 276 阅读 · 0 评论 -
leetcode 1302. 层数最深叶子节点的和 C语言
给你一棵二叉树,请你返回层数最深的叶子节点的和。示例:输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]输出:15提示:树中节点数目在1到10^4之间。每个节点的值在1到100 之间。/** * Definition for a binary tree node. * struct Tr...原创 2020-02-03 15:00:54 · 492 阅读 · 0 评论 -
leetcode 224. 基本计算器 C语言
实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号(,右括号),加号+,减号-,非负整数和空格。示例 1:输入: "1 + 1"输出: 2示例 2:输入: " 2-1 + 2 "输出: 3示例 3:输入: "(1+(4+5+2)-3)+(6+8)"输出: 23说明:你可以假设所给定的表达式都是有效的。请不要使用内置...原创 2020-02-03 14:59:16 · 711 阅读 · 0 评论 -
leetcode 62. 不同路径 C语言
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m和 n 的值均不超过 100。示例1:输入: m = 3, n = 2输出: 3解释:从...原创 2020-02-03 14:51:57 · 322 阅读 · 0 评论 -
leetcode 622. 设计循环队列 C语言
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCirc...原创 2020-02-03 14:45:48 · 736 阅读 · 0 评论 -
leetcode 657. 机器人能否返回原点 C语言
在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在(0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器...原创 2020-02-03 14:39:03 · 330 阅读 · 0 评论 -
leetcode 344. 反转字符串 C语言
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:...原创 2020-02-03 14:33:54 · 341 阅读 · 0 评论 -
leetcode 167. 两数之和 II - 输入有序数组 C语言
给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1必须小于index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], t...原创 2020-02-03 14:32:32 · 268 阅读 · 0 评论 -
leetcode 142. 环形链表 II C语言
给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node inde...原创 2020-02-03 11:37:27 · 309 阅读 · 0 评论 -
leetcode 1047. 删除字符串中的所有相邻重复项 C语言
给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca"输出:"ca"解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到...原创 2020-02-03 11:23:53 · 743 阅读 · 0 评论 -
leetcode 150. 逆波兰表达式求值 C语言
根据逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例2:...原创 2020-02-02 17:21:38 · 634 阅读 · 0 评论 -
leetcode 709. 转换成小写字母 C语言
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: "Hello"输出: "hello"示例 2:输入: "here"输出: "here"示例3:输入: "LOVELY"输出: "lovely"char * toLowerCase(char * str){ ...原创 2020-02-02 17:20:18 · 292 阅读 · 0 评论 -
leetcode 386. 字典序排数 C语言
给定一个整数n, 返回从1到n的字典顺序。例如,给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据n小于等于5,000,000。/** * Note: The returned array must be malloced, assume caller calls ...原创 2020-02-02 17:16:56 · 361 阅读 · 0 评论 -
leetcode 1079. 活字印刷 C语言
你有一套活字字模tiles,其中每个字模上都刻有一个字母tiles[i]。返回你可以印出的非空字母序列的数目。示例 1:输入:"AAB"输出:8解释:可能的序列为 "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA"。示例 2:输入:"AAABBC"输出:188提示:1 <= tiles.length <...原创 2020-02-02 17:15:31 · 523 阅读 · 0 评论