![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
楚仙子
我只是想学算法
展开
-
LeetCode-738
738. 单调递增的数字给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)Example input N = 10 output 9 input N = 1232 output 1229原创 2020-12-16 00:28:48 · 834 阅读 · 0 评论 -
LeetCode-49
49. 字母异位词分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。Example input ["eat", "tea", "tan", "ate", "nat", "bat"] output [ ["ate","eat","tea"], ["nat","tan"], ["ba原创 2020-12-14 15:10:17 · 196 阅读 · 0 评论 -
LeetCode-217
217. 存在重复元素给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。Example input [1,2,3,4] output false input [1,1,1,3,3,4,3,2,4,2] output true Note无思路没啥意义的水原创 2020-12-13 00:18:34 · 169 阅读 · 0 评论 -
LeetCode-376
376. 摆动序列如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5][1,7,4,9,2,5][1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5][1,4,7,2,5][1,4,7,2,5] 和 [1,7,4,5,5][1,7,4,5,5][1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前原创 2020-12-12 00:38:53 · 175 阅读 · 0 评论 -
LeetCode-649
649. Dota2 参议院Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇)Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项:禁止一名参议员的权利:参议员可以让另一位参议员在这一轮和随后的几轮中丧失所有的权利。宣布胜利:如果参议员发现有权利投票的参议员都是同一个阵营的,他可以宣布胜利并决定在游戏中的有关变化。给定一个字符串代表每个参原创 2020-12-11 01:43:03 · 91 阅读 · 0 评论 -
LeetCode-860
860. 柠檬水找零在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。Example input [5,5,5,10,20] output原创 2020-12-10 01:20:07 · 112 阅读 · 0 评论 -
LeetCode-62
62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?Examle input m = 3, n = 2 output 3 input m = 7, n = 3原创 2020-12-09 08:50:37 · 375 阅读 · 0 评论 -
LeetCode-842
842. 将数组拆分成斐波那契序列给定一个数字字符串 S,比如 S = “123456579”,我们可以将它分成斐波那契式的序列 [123, 456, 579]。形式上,斐波那契式序列是一个非负整数列表 F,且满足:0<=F[i]<=231−10 <= F[i] <= 2^{31} - 10<=F[i]<=231−1,(也就是说,每个整数都符合 32 位有符号整数类型);F.length>=3F.length >= 3F.length>=3;原创 2020-12-08 14:31:33 · 149 阅读 · 0 评论 -
LeetCode-29
29. 两数相除给定两个整数,被除数 dividenddividenddividend 和除数 divisordivisordivisor。将两数相除,要求不使用乘法、除法和 modmodmod 运算符。返回被除数 dividenddividenddividend 除以除数 divisordivisordivisor 得到的商。整数除法的结果应当截去(truncate)(truncate)(truncate)其小数部分,例如:truncate(8.345)=8truncate(8.345) = 8tr原创 2020-11-30 19:36:47 · 116 阅读 · 0 评论 -
LeetCode-242
242. 有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。原创 2020-11-23 00:47:39 · 87 阅读 · 0 评论 -
LeetCode-452
452. 用最少数量的箭引爆气球在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xendx_{start},x_{end}xstart,xend, 且满足 xstart≤x≤xendx_{start} ≤ x ≤ x_{end}原创 2020-11-23 00:43:06 · 103 阅读 · 0 评论 -
LeetCode-148
148. 排序链表给你链表的头结点 head ,请将其按升序排列并返回 排序后的链表 。Example input head = [4,2,1,3] output [1,2,3,4] input head = [-1,5,3,4,0] output [-1,0,3,4,5] Note在 O(nlogn)O(n log n)O(nlogn) 时间复原创 2020-11-22 00:16:36 · 83 阅读 · 0 评论 -
LeetCode-28
28. 实现 strStr()实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。Example input haystack = "hello", needle = "ll" output 2 input haystack = "aaaa原创 2020-11-19 23:38:45 · 241 阅读 · 0 评论 -
LeetCode-27
27. 移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。Example input nums = [3,2,2,3], val = 3 output 2 input nums =原创 2020-10-19 23:15:33 · 83 阅读 · 0 评论 -
LeetCode-26
26. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。Example input nums = [1,1,2] output 2 input nums = [0,0,1,1,1,2,2,3,3,4] out原创 2020-10-19 23:08:07 · 220 阅读 · 0 评论 -
LeetCode-25
25. K 个一组翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。Example input 1->2->3->4->5,k=2 output 2->1->4->3->5 input 1->2->3原创 2020-10-19 22:30:12 · 123 阅读 · 0 评论 -
LeetCode-1002
1002. 查找常用字符给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。Example input ["bella","label","roller"] output ["e","l","l"] input ["c原创 2020-10-14 17:12:00 · 117 阅读 · 0 评论 -
LeetCode-530
530. 二叉搜索树的最小绝对差给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。Example input 1 \ 3 /2 output 1 Note例题中最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。树中至少有 2 个节点。思路首先明白二叉搜索树的原创 2020-10-12 14:44:20 · 151 阅读 · 0 评论 -
LeetCode-24
24. 两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。Example input head = [1,2,3,4] output [2,1,4,3] input head = [1] output [1] Note链表中节点的数目在范围 [0, 100]原创 2020-10-14 17:18:38 · 150 阅读 · 0 评论 -
LeetCode-23
23. 合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。Example input lists = [[1,4,5],[1,3,4],[2,6]] output [1,1,2,3,4,4,5,6] input lists = [] output [] input原创 2020-10-19 15:26:32 · 103 阅读 · 0 评论 -
LeetCode-22
22. 括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。Example input n = 3 output [ "((()))", "(()())", "(())()", "()(())", "()()()" ] Note无思路递归解决问题,具体见代码思路来自之前检查“原创 2020-10-14 17:33:41 · 125 阅读 · 0 评论 -
LeetCode-21
21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。Example input 1->2->4, 1->3->4 output 1->1->2->3->4->4 Note无思路因为两个链表已经是有序了,合并的话,每次判断两个链头,选择数值小的作为新的链头即可代码如下# Definition for原创 2020-10-13 11:02:11 · 71 阅读 · 0 评论 -
LeetCode-20
20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。Example input "()[]{}" output true input "(]" output false input原创 2020-10-13 10:27:50 · 63 阅读 · 0 评论 -
LeetCode-19
19. 删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。Example input 1->2->3->4->5n = 2 output 1->2->3->5. Note给定的 n 保证是有效的。思路:很巧妙,自己没有想到= =很容易想到通过递归来解决问题,关键在于每次判断什么,该做什么操作由于题目是需要删除倒数第n个结点,所以遇到.原创 2020-10-13 10:21:22 · 269 阅读 · 0 评论 -
LeetCode-18
18. 四数之和给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。Example input nums = [1, 0, -1, 0, -2, 2], target = 0。 output [ [-1, 0, 0, 1], [-2, -1, 1, 2],原创 2020-10-13 09:44:25 · 118 阅读 · 0 评论 -
LeetCode-17
17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。Example input "23" output ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. Note尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。思路标准dfsdfsd原创 2020-10-13 09:40:38 · 80 阅读 · 0 评论 -
LeetCode-16
16. 最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。Example input nums = [-1,2,1,-4], target = 1 output 2 Note样例中与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。3<=nums.原创 2020-10-13 09:28:48 · 151 阅读 · 0 评论 -
LeetCode-15
15. 三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。Example input nums = [-1, 0, 1, 2, -1, -4] output [ [-1, 0, 1], [-1, -1, 2]] Note注意:答案中不可以包含重复的三元组。思路经典双指针问题首先很容易想到原创 2020-10-12 19:41:42 · 331 阅读 · 0 评论 -
LeetCode-14
14. 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。Example input ["flower","flow","flight"] output "fl" input ["dog","racecar","car"] output "" Note所有输入只包含小写字母 a-z 。思路几种解题方原创 2020-10-11 19:07:04 · 80 阅读 · 0 评论 -
LeetCode-13
13. 罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX +原创 2020-10-11 17:59:26 · 354 阅读 · 0 评论 -
LeetCode-12
12. 整数转罗马数字罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX +原创 2020-10-11 15:03:57 · 133 阅读 · 0 评论 -
LeetCode-11
11. 盛最多水的容器给你 n 个非负整数 a1,a2,...,an,a_1,a_2,...,a_n,a1,a2,...,an,每个数代表坐标中的一个点 (i,ai)(i, a_i)(i,ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i,ai)(i, a_i)(i,ai) 和 (i,0)(i, 0)(i,0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明: 你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5原创 2020-10-11 14:35:01 · 334 阅读 · 2 评论 -
LeetCode-10
10. 正则表达式匹配给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。不考虑 p 中会出现连续*出现Example input s = "aa",p = "a"原创 2020-10-11 00:31:08 · 793 阅读 · 0 评论 -
LeetCode-9
9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。Example input 121 output true input -121 output false input 10 output false Note121从左往右和原创 2020-10-10 11:13:18 · 114 阅读 · 1 评论 -
LeetCode-8
8. 字符串转换整数 (atoi)请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中原创 2020-10-08 23:49:38 · 136 阅读 · 0 评论 -
LeetCode-7
7. 整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,231−1][−2^{31}, 2^{31} − 1][−231,231−1]。请根据这个假设,如果反转后整数溢出那么就返回 0。Example input 123 output 321 input -123 ou原创 2020-10-08 19:46:14 · 64 阅读 · 0 评论 -
LeetCode-6
6. Z 字形变换将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);Example原创 2020-10-08 16:53:22 · 90 阅读 · 0 评论 -
LeetCode-5
5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。Example input babad output aba input cbbd output bb Note无思路经典的动态规划问题解法一:经典dp O(N2)O(N^2)O(N2)令dp[i][j]dp[i][j]dp[i][j]表示原创 2020-09-26 01:37:59 · 57 阅读 · 0 评论 -
LeetCode-4
4. 寻找两个正序数组的中位数给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m+n))O(log(m + n))O(log(m+n))。你可以假设 nums1 和 nums2 不会同时为空。Example input 1 32 output 2.0 input 1 23 4原创 2020-09-11 17:14:00 · 105 阅读 · 0 评论 -
LeetCode-3
3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。Example input abcabcbbbbbbbpwwkew output 313 Note1.因为无重复字符的最长子串是 “abc”,所以其长度为 3。2.因为无重复字符的最长子串是 “b”,所以其长度为 1。3.因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是原创 2020-09-10 23:52:48 · 96 阅读 · 0 评论