![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode
文章平均质量分 59
FouforPast
这个作者很懒,什么都没留下…
展开
-
301.删除无效的括号
原题链接题目描述给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。示例 1:输入:s = “()())()”输出:["(())()","()()()"]示例 2:输入:s = “(a)())()”输出:["(a())()","(a)()()"]示例 3:输入:s = “)(”输出:[""]提示:1 <= s.length <= 25s 由小写英文字母以及括号 ‘(’ 和 ‘)’原创 2021-10-31 17:29:48 · 129 阅读 · 0 评论 -
32.最长有效括号
原题链接题目描述给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0提示:0 <= s.length <= 3 * 104s[i] 为 ‘(’ 或 ‘)’题解方法1:暴力(超时)class Solution: def原创 2021-10-29 22:30:06 · 139 阅读 · 0 评论 -
22.括号生成
题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。有效括号组合需满足:左括号必须以正确的顺序闭合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8题解方法1:深度优先搜索看到这种题最应该先想到的就是深度优先搜索了。需要注意的是,在每次选择的时候,为了保证当前生成的括号是有效原创 2021-10-29 21:58:35 · 100 阅读 · 0 评论 -
20.有效的括号
原题链接题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true提示:1 <=原创 2021-10-29 21:45:57 · 76 阅读 · 0 评论 -
60. 排序序列
原题链接题目描述给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。示例输入:n = 3, k = 3输出:“213”限制1 <= n <= 91 <= k <= n!题解方法1:暴力比较常规的回溯递归(用时6524ms),很明显不是这道题的本意,非常不推荐cl原创 2021-10-21 23:11:43 · 146 阅读 · 0 评论 -
576. 出界的路径数
原题链接题目描述给你一个大小为 m x n 的网格和一个球。球的起始坐标为 [startRow, startColumn] 。你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格之外)。你 最多 可以移动 maxMove 次球。给你五个整数 m、n、maxMove、startRow 以及 startColumn ,找出并返回可以将球移出边界的路径数量。因为答案可能非常大,返回对 109 + 7 取余 后的结果。示例 1:输入:m = 2, n = 2, maxMove = 2, s原创 2021-08-15 21:28:26 · 111 阅读 · 0 评论 -
1104. 二叉树寻路
题目描述原题链接在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记;而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。给你树上某一个节点的标号 label,请你返回从根节点到该标号为 label 节点的路径,该路径是由途经的节点标号所组成的。示例 1:输入:label = 14输出:[1,3,4,14]示例 2:输入:label = 26原创 2021-07-29 21:54:29 · 75 阅读 · 0 评论 -
300 最长递增子序列
题目描述题目链接给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums = [7,7,原创 2021-07-28 00:22:58 · 73 阅读 · 0 评论 -
1713. 得到子序列的最少操作次数
题目描述原题链接给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素。每一次操作中,你可以在 arr 的任意位置插入任一整数。比方说,如果 arr = [1,4,1,2] ,那么你可以在中间添加 3 得到 [1,4,3,1,2] 。你可以在数组最开始或最后面添加整数。请你返回 最少 操作次数,使得 target 成为 arr 的一个子序列。一个数组的 子序列 指的是删除原数组的某些元素(可能一个元素都不删除),同时不改变其余元素的相对顺原创 2021-07-28 00:18:05 · 69 阅读 · 0 评论 -
671 二叉树中第二小的节点
题目描述给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。更正式地说,root.val = min(root.left.val, root.right.val) 总成立。给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例1:输入:root = [2,2,5,null,null,5,7]输出:5解释:最小的值是 2 ,第二小的值是 5原创 2021-07-27 22:35:48 · 60 阅读 · 0 评论 -
1893 检查是否区域内所有整数都被覆盖
题目描述原题链接给你一个二维整数数组 ranges 和两个整数 left 和 right 。每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 。如果闭区间 [left, right] 内每个整数都被 ranges 中 至少一个 区间覆盖,那么请你返回 true ,否则返回 false 。已知区间 ranges[i] = [starti, endi] ,如果整数 x 满足 starti <= x <= endi ,那么我们称整数原创 2021-07-24 14:05:33 · 135 阅读 · 0 评论 -
160 相交链表
题目描述原题链接给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。题目分析一开始理解错了题意,以为相交的意思是从两个链表分别从某个节点开始后面的节点的值相同,实际上是节点相同,节点相同比节点的值相同要更加严格。因此一种方法是可以用哈希集合,快速找出某个链接出现在另一个链表的第一个节点原创 2021-07-21 23:41:18 · 311 阅读 · 1 评论 -
1877. 数组中最大数对和的最小值
题目描述原题链接一个数对 (a,b) 的 数对和 等于 a + b 。最大数对和 是一个数对数组中最大的 数对和 。比方说,如果我们有数对 (1,5) ,(2,3) 和 (4,4),最大数对和 为 max(1+5, 2+3, 4+4) = max(6, 5, 8) = 8 。给你一个长度为 偶数 n 的数组 nums ,请你将 nums 中的元素分成 n / 2 个数对,使得:nums 中每个元素 恰好 在 一个 数对中,且最大数对和 的值 最小 。请你在最优数对划分的方案下,返回最小的 最大数对原创 2021-07-20 19:39:21 · 72 阅读 · 0 评论 -
1838. 最高频元素的频数
题目描述原题链接元素的 频数 是该元素在一个数组中出现的次数。给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。示例示例 1:输入:nums = [1,2,4], k = 5输出:3解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。4 是数组中最高频元素,频数是 3 。示例 2:输入:原创 2021-07-19 23:46:06 · 107 阅读 · 0 评论 -
面试17.10.主要元素(摩尔投票算法)
题目描述原题链接数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。示例示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2:输入:[3,2]输出:-1题目分析最朴素利用hash表的做法不再赘述,该方法空间复杂度不是O(1),不符要求。此外,先排序再取出中间元素的做法复杂度也不符要求。实际上,此题要用到Boyer-Moore 投票算法,该算法流程如下原创 2021-07-09 15:53:48 · 102 阅读 · 0 评论 -
1711大餐计数
题目描述原题链接大餐 是指 恰好包含两道不同餐品 的一餐,其美味程度之和等于 2 的幂。你可以搭配 任意 两道餐品做一顿大餐。给你一个整数数组 deliciousness ,其中 deliciousness[i] 是第 i 道餐品的美味程度,返回你可以用数组中的餐品做出的不同 大餐 的数量。结果需要对 1e9 + 7 取余。注意,只要餐品下标不同,就可以认为是不同的餐品,即便它们的美味程度相同。示例示例 1:输入:deliciousness = [1,3,5,7,原创 2021-07-07 17:17:50 · 50 阅读 · 0 评论 -
1418 点菜展示表
题目描述原题链接给你一个数组 orders,表示客户在餐厅中完成的订单,确切地说, orders[i]=[customerNamei,tableNumberi,foodItemi] ,其中 customerNamei 是客户的姓名,tableNumberi 是客户所在餐桌的桌号,而 foodItemi 是客户点的餐品名称。请你返回该餐厅的 点菜展示表 。在这张表中,表中第一行为标题,其第一列为餐桌桌号 “Table” ,后面每一列都是按字母顺序排列的餐品名称。接下来每一行中的项则表示每张餐桌订购的相应原创 2021-07-06 11:34:21 · 60 阅读 · 0 评论