LeetCode
LeetCode题目集
小熊大人
这个作者很懒,什么都没留下…
展开
-
乘积最大子数组
问题:给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,3,-2]输出: 12解释: 子数组 [-2,3,-2] 有最大乘积 12。分析:对于每个元素,我们可以找到以它结尾的子数组的最大乘积,然后将每一个子数组的乘积进行比较,得到最终结果。那么,如何求取每个元素结尾的子数组的最大乘积呢原创 2020-07-19 09:17:35 · 84 阅读 · 0 评论 -
字符串解码
问题:给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。(注意: k 保证为正整数)你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k 。如不会出现像 3a 或 2[4] 的输入。示例:s = " 3[a]2[bc] ",返回 " aaabcbc ".s = " 3[原创 2020-05-12 23:16:43 · 245 阅读 · 0 评论 -
长度最小的子数组
问题:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。分析:暴力法:求出每个子数组的和,与目标值进行比较,找到长度最小的子数组。pub...原创 2020-04-15 16:32:08 · 272 阅读 · 0 评论 -
和为K的子数组
问题:给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 :输入:nums = [1,1,1],k = 2输出: 2。[1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。分析:对于该问题,最简单直接...原创 2020-04-13 09:16:01 · 114 阅读 · 0 评论 -
任务调度器
问题:给定一个用字符数组表示的 CPU 需要执行的任务列表。使用 A - Z 表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。然而,两个相同种类的任务之间必须有长度为 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有...原创 2020-04-11 13:56:27 · 115 阅读 · 0 评论 -
Nim 游戏
问题:你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛。 因为无论你拿走 1 块、2 块 还是 3 块石头...原创 2020-04-10 18:14:41 · 138 阅读 · 0 评论 -
翻转字符串里面的单词
问题:给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good example”输...原创 2020-04-10 17:07:50 · 213 阅读 · 0 评论 -
不同路径
问题:一个机器人位于一个 m x n 网格的左上角。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。问:总共有多少条不同的路径?示例 1:输入: m = 3, n = 2输出: 3解释: 从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -> 向右向下 -> 向右 -> 向右示例...原创 2020-03-23 13:11:42 · 119 阅读 · 0 评论 -
接雨水
1. 问题描述:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 62. 问题分析:该问题类似木桶存水原理,取决于较短的木板,我们可以将每一个柱子看成两片木板组成的木桶。可以将每个柱子的盛水量相加,得到最终结果。关键在于如何计算每个柱子的盛水量?其实我们不难发...原创 2020-03-22 14:51:02 · 56 阅读 · 0 评论 -
螺旋矩阵
问题描述:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,...原创 2020-03-11 15:50:55 · 116 阅读 · 0 评论 -
字符串相乘
1. 问题描述:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 ...原创 2020-03-08 13:51:07 · 355 阅读 · 0 评论 -
有效的数独
1. 问题描述:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[[“5”,“3”,".",".",“7”,".",".",".","....原创 2020-02-07 13:31:03 · 98 阅读 · 0 评论 -
串联所有单词的子串
1. 问题描述:给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意:子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。示例 1:输入:s = “barfoothefoobarman”,words = [“foo”,“bar”]输出:[0,9]解释:...原创 2020-02-05 12:22:23 · 178 阅读 · 0 评论 -
搜索旋转排序数组
1. 问题描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 旋转变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值 target,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2:输入: nu...原创 2020-02-03 13:12:38 · 82 阅读 · 0 评论 -
下一个排列
1. 问题描述:实现获取下一个排列的函数。算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。注:必须原地修改,只允许使用额外常数空间。例:1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,12. 问题分析:该算法实现的功能:找到给定序列按ASCII码排序的下一个序列(如:...原创 2020-02-02 12:57:54 · 91 阅读 · 0 评论 -
链表组件
1. 问题描述:给定一个链表(链表结点包含一个整型值)的头结点 head。同时给定列表 G,该列表是上述链表中整型值的一个子集。返回列表 G 中组件的个数。这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 G 中)构成的集合。示例 1:输入: head: 0->1->2->3,G = [0, 1, 3]输出: 2解释: 链表中,0 和 1 是...原创 2019-12-15 19:40:24 · 219 阅读 · 0 评论 -
打家劫舍
1. 问题描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = ...原创 2019-12-15 16:55:30 · 59 阅读 · 0 评论 -
搜索插入位置
1. 问题描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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...原创 2019-12-07 16:53:54 · 56 阅读 · 0 评论 -
比较版本号
1. 问题描述:比较两个版本号 version1 和 version2。如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和字符 ‘.’。字符 ‘.’ 不代表小数点,而是用于分隔数字序列。例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二版中的第五个...原创 2019-12-07 15:46:24 · 749 阅读 · 0 评论 -
Excel表列序号
1. 问题描述:给定一个Excel表格中的列名称,返回其相应的列序号。例:A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1:输入: “A”输出: 1示例 2:输入: “ZY”输出: 7012. 问题分析:根据问题描述,我们很容易得到 A—Z 分别对应 1—26...原创 2019-12-04 20:32:54 · 185 阅读 · 0 评论 -
最大间距
1. 问题描述:给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例 1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例 2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。2. 问题分析...原创 2019-11-30 21:04:31 · 136 阅读 · 0 评论 -
旋转链表
1. 问题描述:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步:...原创 2019-11-27 17:31:50 · 168 阅读 · 0 评论 -
加一
1. 问题描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一,返回加一后的结果。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数...原创 2019-11-25 22:49:29 · 74 阅读 · 0 评论 -
Pow(x, n)
1. 问题描述:实现 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 <...原创 2019-11-25 21:50:04 · 625 阅读 · 0 评论 -
最长回文子串
1. 问题描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”2. 问题分析:在这里讲解两种方法:暴力法。在字符串 s 中找到所有可能的回文串的起始位置,判断其是否是回文串。中心扩展法。一个...原创 2019-11-17 18:48:44 · 47 阅读 · 0 评论 -
杨辉三角 II
1. 问题描述:**给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。**示例:输入: 3输出: [1,3,3,1]2. 问题分析:3. 代码实现:...原创 2019-11-16 22:32:30 · 58 阅读 · 0 评论 -
寻找缺失数字
1. 问题描述:给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 22. 问题分析:本算法要求找到 0, 1, 2, …, n 中没有出现在所给序列的那个数。我们最容易想到的解决办法就是将 0 – n 和所给序列的和求出来,作差,得到值即为所找数字,但是此方法的时间复杂度比较差。我们可以利...原创 2019-09-18 22:24:34 · 192 阅读 · 0 评论 -
最长递增子序列的个数
1. 问题描述:给定一个未排序的整数数组,找到最长递增子序列的个数。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。2. 问题分析:在一个给定的未排...原创 2019-09-23 20:15:35 · 220 阅读 · 0 评论 -
最大子序和
1. 问题描述:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。2. 问题分析:该题要求找到最大的连续子数组,并返回最大连续子数组的和。最暴力的方法就是直接进行两重循环嵌套,列出所有的子数组,找出...原创 2019-09-29 18:03:04 · 67 阅读 · 0 评论 -
爬楼梯
1. 问题描述:假设你正在爬楼梯,需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?(注意:给定 n 是一个正整数)示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶( 1 阶 + 1 阶 或 2 阶)示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶(1 阶 + 1 阶 + 1 阶 或 1 阶 +...原创 2019-09-30 23:06:30 · 77 阅读 · 0 评论 -
最后一个单词的长度
1. 问题描述:给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。( 说明:一个单词是指由字母组成,但不包含任何空格的字符串 )示例:输入: “Hello World”输出: 52. 问题分析:所给字符串仅仅由英文字母和空格组成,因此字符串大致分为两种类型:“hello world” 和 "hello world "...原创 2019-10-05 14:38:29 · 63 阅读 · 0 评论 -
二进制求和
1. 问题描述:给定两个二进制字符串,返回他们的和。(输入为非空字符串且只包含数字 1 和 0,输出二进制形式的字符串)示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”2. 问题分析:问题的难点是字符形式的相加进位问题,可能首先想到思路的是将字符串转化为字节数组或...原创 2019-10-06 08:26:37 · 105 阅读 · 0 评论 -
无重复字符的最长子串
1. 问题描述:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最...原创 2019-10-17 20:31:42 · 81 阅读 · 0 评论 -
删除排序数组中的重复项
1. 问题描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。(不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成)示例 1:给定数组 nums = [1,1,2]函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 ...原创 2019-10-20 19:54:37 · 55 阅读 · 0 评论 -
寻找重复数
1. 问题描述:给定一个包含 n+1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 32. 问题分析:我们可以新建一个数组 count(长度为 n+1),用 1 到 n 表示 ...原创 2019-10-27 17:30:36 · 66 阅读 · 0 评论 -
三个数的最大乘积
1. 问题描述:给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [-10,-2,3,5,4]输出: 100注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。2. 问题分析:方法...原创 2019-11-03 16:41:53 · 575 阅读 · 0 评论 -
无重复字符的最长子串
1. 问题描述:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最...原创 2019-11-03 18:53:04 · 71 阅读 · 0 评论 -
字符串转换整数 (atoi)
1. 问题描述:请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字...原创 2019-11-10 20:29:43 · 68 阅读 · 0 评论 -
杨辉三角
1. 问题描述:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。(注:在杨辉三角中,每个数是它左上方和右上方的数的和。)示例:输入:5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]2. 问题分析:杨辉三角的核心:从第三行开始,除去首元素和末尾元素,其余元素等于它的上一行所对应位置的元素和上一行所对...原创 2019-11-16 11:42:26 · 70 阅读 · 0 评论 -
三数之和
1. 问题描述:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ,找出所有满足条件且不重复的三元组。(注意:答案中不可以包含重复的三元组。)例如: 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2] ]2. 问题...原创 2019-11-16 20:26:48 · 50 阅读 · 0 评论