LeetCode刷题笔记
太平长安C
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题笔记-32. 最长有效括号
题目:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1: 输入: “(()” 输出: 2 解释: 最长有效括号子串为 “()”示例 2: 输入: “)()())” 输出: 4 解释: 最长有效括号子串为 “()()”题解:定义一个 dp 数组,其中第 i 个元素表示以下标为 i 的字符结尾的最长有效子字符串的长度。可知dp[0]=0,且位...原创 2020-03-31 21:08:05 · 228 阅读 · 0 评论 -
LeetCode刷题笔记-31. 下一个排列(数学)
题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1题解因为必须原地修改且只允许使用额外常数空间,所以...原创 2020-03-22 23:36:17 · 257 阅读 · 0 评论 -
LeetCode刷题笔记-23. 合并K个排序链表(分治法)
题目:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出:1->1->2->3->4->4->5->6题解:参考这题21. 合并两个有序链表。①:将k个排序链表两两排序,排k-1次后最终结果就是合并后结果,时间复杂度:...原创 2020-03-22 17:28:43 · 434 阅读 · 0 评论 -
LeetCode刷题笔记-22. 括号生成(DFS递归)
题目:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ]题解:可以采用深度优先遍历递归法:class Solution { List<String> result=...原创 2020-03-19 12:23:45 · 304 阅读 · 0 评论 -
LeetCode刷题笔记-20. 有效的括号(栈) 21. 合并两个有序链表(迭代)
题目1:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 :输入: “()” 输出: true 示例 2:输入: “()[]{}” 输出: true 示例 3:输入: “(]” 输出: false 示例 4:输入:...原创 2020-03-18 18:10:44 · 146 阅读 · 0 评论 -
LeetCode刷题笔记-19. 删除链表的倒数第N个节点(双指针法)
题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:使用一趟扫描实现题解:首先遍历一遍链表得到链表的长度,删除倒数第n个节点也就是删除正数第 len-n+...原创 2020-03-16 12:29:31 · 372 阅读 · 0 评论 -
LeetCode刷题笔记- 17. 电话号码的字母组合(DFS递归)
题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。题解:该题其实是一个二叉树...原创 2020-03-15 17:28:16 · 190 阅读 · 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]]题解:首先想到的思路...原创 2020-03-14 17:55:19 · 184 阅读 · 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] 输出:49题解:这道题首先很轻易...原创 2020-03-13 13:54:27 · 358 阅读 · 0 评论 -
LeetCode刷题笔记-10. 正则表达式匹配(动态规划)
题目:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。‘.’ 匹配任意单个字符'’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入: s = “aa” p ...原创 2020-03-12 12:14:15 · 444 阅读 · 0 评论 -
LeeCode刷题笔记-5. 最长回文子串(动态规划/中心扩展)
题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1: 输入: “babad” 输出: “bab”注意: “aba” 也是一个有效答案。示例 2: 输入: “cbbd” 输出: “bb”题解:class Solution { public String longestPalindrome(String s) { ...原创 2020-03-07 22:15:51 · 274 阅读 · 2 评论 -
LeetCode刷题笔记-4. 寻找两个有序数组的中位数(二分查找)
题目:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 ...原创 2020-03-07 10:16:29 · 368 阅读 · 0 评论