LeetCode
千与千与千
不学无术、一无是处
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
209.(126)最长连续序列
题目描述:给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为O(n)。示例:输入:[100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。思路:用哈希表存储每个端点值对应连续区间的长度 若数已在哈希表中:跳过不做处理 若是新数加入: 取出其左右相邻数已有的连续区间长度 left 和 right 计算当前数的区间长度为:cur_length = left + right + 1 ..原创 2020-10-21 12:42:15 · 164 阅读 · 0 评论 -
208.(867)转置矩阵
题目描述:给定一个矩阵A,返回A的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]提示:1 <= A.length<= 10001 <= A[0].length<= 1000思路:1、A矩阵的...原创 2020-10-20 20:56:31 · 194 阅读 · 0 评论 -
207.(443)压缩字符串
题目描述:给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。进阶:你能否仅使用O(1) 空间解决问题?示例 1:输入:["a","a","b","b","c","c","c"]输出:返回 6 ,输入数组的前 6 个字符应该是:["a","2","b","2","c","3"]说明:"aa" 被 "a2" 替代。"bb" 被 "b2.原创 2020-10-10 11:50:02 · 212 阅读 · 0 评论 -
206.(553)最优除法
题目描述:给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如,[2,3,4] -> 2 / 3 / 4 。但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号。示例:输入: [1000,100,10,2]输出: "1000/(100/10/2)"解释:1000/(100/10/2) = 1000/((100/10)/2) = 200但是,以下加粗的括号 .原创 2020-10-10 11:13:18 · 273 阅读 · 0 评论 -
205.(434)字符串中的单词数
题目描述:统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: "Hello, my name is John"输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 "Hello," 算作 1 个单词。思路:1、在字符串的末尾加一个空格作为结束2、遍历字符串,如果碰到空格,则判断前一个字符是不是空格,如果不是,则计数加一代码:class Solution {public: in原创 2020-10-10 10:33:07 · 191 阅读 · 0 评论 -
204.(917)仅仅反转字母
题目描述:给定一个字符串S,返回“反转后的”字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 1:输入:"ab-cd"输出:"dc-ba"示例 2:输入:"a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例 3:输入:"Test1ng-Leet=code-Q!"输出:"Qedo1ct-eeLg=ntse-T!"提示:S.length <= 10033 <= S[i].ASCIIcode <= 122S 中...原创 2020-10-08 09:41:46 · 188 阅读 · 0 评论 -
203.(859)亲密字符串
题目描述:给定两个由小写字母构成的字符串A和B,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回true;否则返回 false 。示例 1:输入: A = "ab", B = "ba"输出: true示例 2:输入: A = "ab", B = "ab"输出: false示例 3:输入: A = "aa", B = "aa"输出: true示例 4:输入: A = "aaaaaaabc", B = "aaaaaaacb"输出: true示例 5...原创 2020-10-06 16:44:41 · 144 阅读 · 0 评论 -
203.(1374)生成每种字符都是奇数个的字符串
题目描述:给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。示例 1:输入:n = 4输出:"pppz"解释:"pppz" 是一个满足题目要求的字符串,因为 'p' 出现 3 次,且 'z' 出现 1 次。当然,还有很多其他字符串也满足题目要求,比如:"ohhh" 和 "love"。示例 2:输入:n = 2输出:"xy"解释:"xy" 是原创 2020-10-06 13:06:50 · 378 阅读 · 0 评论 -
202.(1249)移除无效的括号
题目描述:给你一个由 '('、')' 和小写字母组成的字符串 s。你需要从字符串中删除最少数目的 '(' 或者 ')'(可以删除任意位置的括号),使得剩下的「括号字符串」有效。请返回任意一个合法字符串。有效「括号字符串」应当符合以下任意一条要求:空字符串或只包含小写字母的字符串可以被写作AB(A连接B)的字符串,其中A和B都是有效「括号字符串」可以被写作(A)的字符串,其中A是一个有效的「括号字符串」示例 1:输入:s = "lee(t(c)o)d...原创 2020-10-06 12:11:04 · 198 阅读 · 0 评论 -
201.(面试题01.06)字符串压缩
题目描述:字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:"aabcccccaaa"输出:"a2b1c5a3"示例2:输入:"abbccd"输出:"abbccd"解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。提示:字符串长度在[0, 50000]范...原创 2020-10-06 10:31:27 · 230 阅读 · 0 评论 -
200.(1370)上升下降字符串
题目描述:给你一个字符串s,请你根据下面的算法重新构造字符串:从 s中选出 最小的字符,将它 接在结果字符串的后面。从 s剩余字符中选出最小的字符,且该字符比上一个添加的字符大,将它 接在结果字符串后面。重复步骤 2 ,直到你没法从 s中选择字符。从 s中选出 最大的字符,将它 接在结果字符串的后面。从 s剩余字符中选出最大的字符,且该字符比上一个添加的字符小,将它 接在结果字符串后面。重复步骤 5,直到你没法从 s中选择字符。重复步骤 1 到 6 ...原创 2020-10-06 10:07:43 · 123 阅读 · 0 评论 -
199.(459)重复的子字符串
题目描述:给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例 2:输入: "aba"输出: False示例 3:输入: "abcabcabcabc"输出: True解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)思路:推荐题解:https://原创 2020-10-06 09:38:59 · 133 阅读 · 0 评论 -
198.(1576)替换所有的问号
题目描述:给你一个仅包含小写英文字母和 '?' 字符的字符串 s,请你将所有的 '?' 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。注意:你 不能 修改非 '?' 字符。题目测试用例保证 除 '?' 字符 之外,不存在连续重复的字符。在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。示例 1:输入:s = "?zs"输出:"azs"解释:该示例共有 25 种解决方案,从 "a原创 2020-10-05 19:02:53 · 381 阅读 · 0 评论 -
197.(529)扫雷游戏
题目描述:让我们一起来玩扫雷游戏!给定一个代表游戏板的二维字符矩阵。'M'代表一个未挖出的地雷,'E'代表一个未挖出的空方块,'B'代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字('1' 到 '8')表示有多少地雷与这块已挖出的方块相邻,'X'则表示一个已挖出的地雷。现在给出在所有未挖出的方块中('M'或者'E')的下一个点击位置(行和列索引),根据以下规则,返回相应位置被点击后对应的面板:如果一个地雷('M')被挖出,游戏就结束了- 把它改为'X'...原创 2020-09-30 14:04:21 · 170 阅读 · 0 评论 -
196.(802)找到最终的安全状态
题目描述:在有向图中, 我们从某个节点和每个转向处开始, 沿着图的有向边走。 如果我们到达的节点是终点 (即它没有连出的有向边), 我们停止。现在, 如果我们最后能走到终点,那么我们的起始节点是最终安全的。 更具体地说, 存在一个自然数 K,无论选择从哪里开始行走, 我们走了不到 K 步后必能停止在一个终点。哪些节点最终是安全的? 结果返回一个有序的数组。该有向图有 N 个节点,标签为 0, 1, ..., N-1, 其中 N 是graph的节点数.图以以下的形式给出: grap...原创 2020-09-29 18:37:42 · 200 阅读 · 0 评论 -
195.(1328)破坏回文串
题目描述:给你一个回文字符串palindrome ,请你将其中一个 字符用任意小写英文字母替换,使得结果字符串的字典序最小,且不是回文串。请你返回结果字符串。如果无法做到,则返回一个空串。示例 1:输入:palindrome = "abccba"输出:"aaccba"示例 2:输入:palindrome = "a"输出:""提示:1 <= palindrome.length <= 1000palindrome只包含小写英文字母。思路:Leet...原创 2020-09-29 13:38:44 · 158 阅读 · 0 评论 -
194.(468)验证IP地址
题目描述:编写一个函数来验证输入的字符串是否是有效的 IPv4 或IPv6 地址。如果是有效的 IPv4 地址,返回 "IPv4" ;如果是有效的 IPv6 地址,返回 "IPv6" ;如果不是上述类型的 IP 地址,返回 "Neither" 。IPv4地址由十进制数和点来表示,每个地址包含 4 个十进制数,其范围为0 -255,用(".")分割。比如,172.16.254.1;同时,IPv4 地址内的数不会以 0 开头。比如,地址172.16.254.01 是不合法的。I...原创 2020-09-28 21:17:01 · 383 阅读 · 0 评论 -
193.(面试题 16.26) 计算器
题目描述:给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格。 整数除法仅保留整数部分。示例1:输入: "3+2*2"输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5说明:你可以假设所给定的表达式都是有效的。请不要使用内置的库函数 eval。思路:1、遍历字符串,分别存储运算符和数字2、按照规则,...原创 2020-09-28 20:37:26 · 339 阅读 · 0 评论 -
192.(874)模拟行走的机器人
题目描述:机器人在一个无限大小的网格上行走,从点(0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令:-2:向左转90 度-1:向右转 90 度1 <= x <= 9:向前移动x个单位长度在网格上有一些格子被视为障碍物。第 i个障碍物位于网格点 (obstacles[i][0], obstacles[i][1])机器人无法走到障碍物上,它将会停留在障碍物的前一个网格方块上,但仍然可以继续该路线的其余部分。返回从原点到机器人所有经过的路径点(...原创 2020-09-25 15:02:59 · 182 阅读 · 0 评论 -
191.(1293)网格中的最短路径
题目描述:给你一个m * n的网格,其中每个单元格不是0(空)就是1(障碍物)。每一步,您都可以在空白单元格中上、下、左、右移动。如果您 最多 可以消除 k 个障碍物,请找出从左上角 (0, 0) 到右下角 (m-1, n-1) 的最短路径,并返回通过该路径所需的步数。如果找不到这样的路径,则返回 -1。示例 1:输入:grid =[[0,0,0],[1,1,0],[0,0,0],[0,1,1],[0,0,0]],k = 1输出:6解释:不消除任何障...原创 2020-09-23 18:38:32 · 873 阅读 · 0 评论 -
190.(1091)二进制矩阵中的最短路径
题目描述:在一个N ×N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。一条从左上角到右下角、长度为 k 的畅通路径,由满足下述条件的单元格C_1, C_2, ..., C_k组成:相邻单元格C_i 和C_{i+1}在八个方向之一上连通(此时,C_i 和C_{i+1}不同且共享边或角)C_1 位于(0, 0)(即,值为grid[0][0])C_k位于(N-1, N-1)(即,值为grid[N-1][N-1])如果 C_i 位于(r, c),则 g...原创 2020-09-23 14:51:04 · 211 阅读 · 0 评论 -
189.(300)最长上升子序列
题目描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为O(n2) 。进阶: 你能将算法的时间复杂度降低到O(n log n) 吗?思路:1、动态规划2、定义一个数组,表示dp[i]表示以 i 位置为结尾的最长升序子序列的长度3、...原创 2020-09-16 17:53:45 · 153 阅读 · 0 评论 -
188.(474)一和零
题目描述:在计算机界中,我们总是追求用有限的资源获取最大的收益。现在,假设你分别支配着 m 个0和 n 个1。另外,还有一个仅包含0和1字符串的数组。你的任务是使用给定的m 个0和 n 个1,找到能拼出存在于数组中的字符串的最大数量。每个0和1至多被使用一次。注意:给定0和1的数量都不会超过100。给定字符串数组的长度不会超过600。示例 1:输入: Array = {"10", "0001", "111001", "1", "0"}, ...原创 2020-09-16 16:15:52 · 157 阅读 · 0 评论 -
187.(77)组合
题目描述:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]思路:递归代码:class Solution {public: vector<vector<int>> combine(int n, int k) { vector<bool&...原创 2020-09-10 16:59:34 · 194 阅读 · 0 评论 -
186.(74)搜索二维矩阵
题目描述:编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例2:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], ...原创 2020-09-10 16:06:12 · 161 阅读 · 0 评论 -
185.(97)交错字符串
题目描述:给定三个字符串s1, s2, s3, 验证s3是否是由s1和s2 交错组成的。示例 1:输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出:true示例2:输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出:false思路:1、动态规划2、dp[i][j]表示,s1的前i个字符,s2的前j个字符,能否组成s3的前i+j个字符代码:class S...原创 2020-09-09 19:40:23 · 176 阅读 · 0 评论 -
184.(81)搜索旋转排序数组 ||
题目描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,0,1,2,2,5,6]可能变为[2,5,6,0,0,1,2])。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回true,否则返回false。示例1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例2:输入: nums = [2,5,6,0,0,1,2], target = 3输出: false进阶:这是 搜索旋转排...原创 2020-09-09 15:26:02 · 156 阅读 · 0 评论 -
183.(92)反转链表 ||
题目描述:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL思路:1、从头开始遍历,记录每一步的前一个节点2、考虑两种特殊情况,从首节点开始反转、到尾节点结束反转代码:/** * Definition for singly-linked...原创 2020-09-08 21:42:29 · 166 阅读 · 0 评论 -
182.(93)复原IP地址
题目描述:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效的 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效的 IP 地址。示例 1:输入:s = "25525511135"输出:["255.255.原创 2020-09-08 16:33:23 · 396 阅读 · 0 评论 -
181.(135)分发糖果
题目描述:老师想给孩子们分发糖果,有 N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例2:输入: [1,2,2]输出: 4解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。...原创 2020-09-02 20:03:20 · 160 阅读 · 0 评论 -
180.(86)分隔链表
题目描述:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路:1、从链表开始位置遍历2、新建一个链表3、比较节点值与给定值的大小,小于,则链表删除该结点,并将该结点插入到新链表的尾部4、将新链表的尾部原创 2020-09-02 11:56:12 · 157 阅读 · 0 评论 -
179.(29)两数相除
题目描述:给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数dividend除以除数divisor得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例1:输入: dividend = 10, divisor = 3输出: 3解释: 10/3 = truncate(3.33333..) = ...原创 2020-09-01 22:44:15 · 272 阅读 · 0 评论 -
178.(剑指 offer 46)把数字反转成字符串
题目描述:给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"提示:0 <= num < 231思路:当前位置 i 的数字与前一个第i.原创 2020-08-31 21:45:10 · 188 阅读 · 0 评论 -
177.(49)字母异位词分组
题目描述:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。思路:1、则字符串排序后,字母异位词的字符串相等2、使用map<string,vector<string>...原创 2020-08-31 18:12:14 · 166 阅读 · 0 评论 -
176.(47)全排列 ||
题目描述:给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]思路:1、使用set<vector<int>>去重2、使用剪枝法,推荐题解:https://leetcode-cn.com/problems/permutations-ii/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liwe-2...原创 2020-08-31 15:30:09 · 205 阅读 · 0 评论 -
175.(43)字符串相乘
题目描述:给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1和num2的长度小于110。num1 和num2 只包含数字0-9。num1 和num2均不以零开头,除非是数字 0 本身。不能使用任何标准库的...原创 2020-08-29 18:34:19 · 212 阅读 · 0 评论 -
174.(41)缺失的第一个正数
题目描述:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例1:输入: [1,2,0]输出: 3示例2:输入: [3,4,-1,1]输出: 2示例3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。思路:遍历一次数组把大于等于1的和小于数组大小的值放到改元素值减1的位置上,然后再遍历一次数组查当前下标加1是否和当前元素值对应,如果不对应那这个下标就是答案,否则遍历完都没出现那么...原创 2020-08-29 14:35:26 · 142 阅读 · 0 评论 -
173.(30)串联所有单词的子串
题目描述:给定一个字符串s和一些长度相同的单词words。找出 s 中恰好可以由words 中所有单词串联形成的子串的起始位置。注意子串要与words 中的单词完全匹配,中间不能有其他字符,但不需要考虑words中单词串联的顺序。示例 1:输入: s = "barfoothefoobarman", words = ["foo","bar"]输出:[0,9]解释:从索引 0 和 9 开始的子串分别是 "barfoo" 和 "foobar" 。输出的顺序不重要, [...原创 2020-08-28 21:26:22 · 215 阅读 · 0 评论 -
172.(65)有效数字
题目描述:验证给定的字符串是否可以解释为十进制数字。例如:"0"=>true" 0.1 "=>true"abc"=>false"1 a"=>false"2e10"=>true" -90e3"=>true" 1e"=>false"e3"=>false" 6e-1"=>true" 99e2.5"=>false"53.5e93"=>true" --6 "=>...原创 2020-08-27 22:30:06 · 274 阅读 · 0 评论 -
171.(61)旋转链表
题目描述:给定一个链表,旋转链表,将链表每个节点向右移动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 步: 4->5->1->2->3->NULL示例2:输入: 0->1->...原创 2020-08-26 16:12:06 · 168 阅读 · 0 评论
分享