
LeetCode
yj_coder
这个作者很懒,什么都没留下…
展开
-
LeetCode 409. 最长回文串
题目描述给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如"Aa"不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。问题分析先统计字符串中每个字符的个数,...原创 2019-03-25 12:55:23 · 114 阅读 · 0 评论 -
LeetCode 290. 单词模式
题目描述给定一种pattern(模式)和一个字符串str,判断str是否遵循相同的模式。这里的遵循指完全匹配,例如,pattern里的每个字母和字符串str中的每个非空单词之间存在着双向连接的对应模式。示例1:输入: pattern = "abba", str = "dog cat cat dog"输出: true示例 2:输入:pattern ...原创 2019-03-25 15:43:06 · 163 阅读 · 0 评论 -
LeetCode 1. 两数之和
题目描述给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...原创 2019-03-25 18:31:53 · 88 阅读 · 0 评论 -
LeetCode 2. 两数相加
题目描述给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -&g...原创 2019-03-25 19:33:37 · 95 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串
题目描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无...原创 2019-03-25 20:25:27 · 131 阅读 · 0 评论 -
LeetCode 5. 最长回文子串
题目描述给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"问题分析从起始位置遍历字符串的每一个字符,在每一个字符处,分别以奇数和偶数两种方式向左右扩展,记录最长的回文子串。循环结束后进行子...原创 2019-03-25 21:13:27 · 88 阅读 · 0 评论 -
LeetCode 7. 整数反转
题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返...原创 2019-03-25 21:24:06 · 92 阅读 · 0 评论 -
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置
题目描述给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(logn) 级别。如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例2:输入: nums = [5,7,7...原创 2019-03-29 15:16:06 · 151 阅读 · 0 评论 -
LeetCode 8. 字符串转换整数(atoi)
题目描述请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符...原创 2019-03-25 23:51:22 · 117 阅读 · 0 评论 -
LeetCode 35. 搜索插入位置
题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,...原创 2019-03-29 15:47:58 · 118 阅读 · 0 评论 -
LeetCode 36. 有效的数独
题目描述判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用'.'表示。示例1:输入:[ ["5","3","."...原创 2019-03-29 22:11:43 · 117 阅读 · 0 评论 -
LeetCode 62. 不同路径
题目描述一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m和n的值均不超过 100。示例1:输入: m = 3, n = 2输出: ...原创 2019-04-03 21:41:52 · 92 阅读 · 0 评论 -
LeetCode 63. 不同路径 II
题目描述一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用1和0来表示。说明:m和n的值均不超过 100。示例1:输入...原创 2019-04-03 22:57:42 · 109 阅读 · 0 评论 -
LeetCode 38. 报数
题目描述报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11被读作"two 1s"("两个一"), 即21。21被读作"one 2", "one 1"("一个二"...原创 2019-03-30 14:27:26 · 111 阅读 · 0 评论 -
LeetCode 39. 组合总和
题目描述给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。 解集不能包含重复的组合。示例1:输入: candidates = [2,3,6,7], target = 7,...原创 2019-03-30 15:59:12 · 130 阅读 · 0 评论 -
LeetCode 29. 两数相除
题目描述给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数dividend除以除数divisor得到的商。示例1:输入: dividend = 10, divisor = 3输出: 3示例2:输入: dividend = 7, divisor = -3输出: -2说明:被...原创 2019-03-26 17:42:00 · 119 阅读 · 0 评论 -
LeetCode 40. 组合总和 II
题目描述给定一个数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。示例1:输入: candidates =[10,1,2,7,6,1,5], target =8...原创 2019-03-30 16:26:54 · 105 阅读 · 0 评论 -
LeetCode 41. 缺失的第一个正数
题目描述给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例1:输入: [1,2,0]输出: 3示例2:输入: [3,4,-1,1]输出: 2示例3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。问题分析此题想法是把每个正整数放到它应该在的位置,比如把1放...原创 2019-03-30 18:04:55 · 120 阅读 · 0 评论 -
LeetCode 64. 最小路径和
题目描述给定一个包含非负整数的mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。问题分析动态规划题。创建一个二维数组,先把dp数组的第一行和第一列创建好,然后...原创 2019-04-04 12:13:50 · 146 阅读 · 0 评论 -
LeetCode 66. 加一
题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数...原创 2019-04-04 12:41:25 · 100 阅读 · 0 评论 -
LeetCode 69. x的平方根
题目描述实现int sqrt(int x)函数。计算并返回x的平方根,其中x是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。问题分析用二分法查找平方小于等于x...原创 2019-04-04 13:39:00 · 143 阅读 · 0 评论 -
LeetCode 42. 接雨水
题目描述给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。感谢 Marcos贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6问题分析此题用单...原创 2019-03-30 20:04:14 · 159 阅读 · 0 评论 -
LeetCode 31. 下一个排列
题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3→1,3,23,2,1→1,2,31,1,5→1,5,1问题分析从后向前遍历,当发现第一个顺序对的...原创 2019-03-26 20:27:07 · 114 阅读 · 0 评论 -
LeetCode 70. 爬楼梯
题目描述假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 ...原创 2019-04-04 14:01:16 · 95 阅读 · 0 评论 -
LeetCode 32. 最长有效括号
题目描述给定一个只包含'('和')'的字符串,找出最长的包含有效括号的子串的长度。示例1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"问题分析从前到后遍历字符串,当前字符为 '(' 时,将该字符的下标压入栈;当前字符为 ')' 时,分情况。如果...原创 2019-03-26 21:29:41 · 112 阅读 · 0 评论 -
LeetCode 9. 回文数
题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它...原创 2019-03-26 21:41:02 · 110 阅读 · 0 评论 -
LeetCode 11. 盛最多水的容器
题目描述给定n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器...原创 2019-03-26 22:14:20 · 122 阅读 · 0 评论 -
LeetCode 13. 罗马数字转整数
题目描述罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两...原创 2019-03-26 22:51:26 · 121 阅读 · 0 评论 -
LeetCode 84. 柱状图中最大的矩形
题目描述给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。示例:输入: [2,1,5,6,2,3]输出: 10问题分析这...原创 2019-03-30 23:23:50 · 377 阅读 · 0 评论 -
LeetCode 14. 最长公共前缀
题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。问题分析先判断数组的大...原创 2019-03-27 01:18:38 · 104 阅读 · 0 评论 -
LeetCode 15. 三数之和
题目描述给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]问题分析...原创 2019-03-27 08:02:23 · 101 阅读 · 0 评论 -
LeetCode 16. 最接近的三数之和
题目描述给定一个包括n个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).问题分析先将数组排序,...原创 2019-03-27 08:34:49 · 185 阅读 · 0 评论 -
LeetCode 17. 电话号码的字母组合
题目描述给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。问题分析...原创 2019-03-27 09:31:26 · 641 阅读 · 0 评论 -
LeetCode 71. 简化路径
题目描述以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠/开头,并且两个目录名...原创 2019-04-04 16:54:04 · 235 阅读 · 0 评论 -
LeetCode 18. 四数之和
题目描述给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素a,b,c和d,使得a+b+c+d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的...原创 2019-03-27 09:47:28 · 156 阅读 · 0 评论 -
LeetCode 19. 删除链表的倒数第N个节点
题目描述给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?问题分析首先判断头节点是否为空,如果为空则返回N...原创 2019-03-27 10:40:42 · 101 阅读 · 0 评论 -
LeetCode 73. 矩阵置零
题目描述给定一个mxn的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,...原创 2019-04-04 19:46:01 · 192 阅读 · 0 评论 -
LeetCode 72. 编辑距离
题目描述给定两个单词word1和word2,计算出将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符 删除一个字符 替换一个字符示例1:输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> rorse (将 'h' 替换为 'r')rorse -&g...原创 2019-04-04 21:08:16 · 170 阅读 · 0 评论 -
LeetCode 20. 有效的括号
题目描述给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: ...原创 2019-03-27 11:03:56 · 99 阅读 · 0 评论 -
LeetCode 21. 合并两个有序链表
题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4问题分析创建一个新的链表来表示合并后的链表,当l1和l2都不为空时,比较两个节点的值,然后将新的链表的next节点就设为此节点。并将l1和...原创 2019-03-27 13:32:23 · 108 阅读 · 0 评论