LeetCode_Algorithms_Hard
什么你竟然不会敲代码
因故停了,谢谢大家支持。不必私信
展开
-
LeetCode-Algorithms-[Hard]剑指 Offer 51. 数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000/** * https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof/ * 剑指 Offer 51. 数组中的逆序对 * ———————————————————————————————————原创 2021-02-03 15:09:24 · 179 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]1349. 参加考试的最大学生数
给你一个 m * n 的矩阵 seats 表示教室中的座位分布。如果座位是坏的(不可用),就用 ‘#’ 表示;否则,用 ‘.’ 表示。学生可以看到左侧、右侧、左上、右上这四个方向上紧邻他的学生的答卷,但是看不到直接坐在他前面或者后面的学生的答卷。请你计算并返回该考场可以容纳的一起参加考试且无法作弊的最大学生人数。学生必须坐在状况良好的座位上。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-students-taking-exam原创 2020-11-14 15:11:20 · 200 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]剑指 Offer 19. 正则表达式匹配
请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa”p = “a*”输出: true解释: 因为 ‘*’原创 2020-10-20 09:42:13 · 137 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]10. 正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入:s =原创 2020-09-24 10:55:08 · 160 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]37. 解数独
编写一个程序,通过填充空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。一个数独。答案被标成红色。提示:给定的数独序列只包含数字 1-9 和字符 ‘.’ 。你可以假设给定的数独只有唯一解。给定数独永远是 9x9 形式的。来源:力扣(LeetCode)链接:https://leetcode-cn.com/proble原创 2020-09-20 09:48:07 · 155 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]239. 滑动窗口最大值
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:你能在线性时间复杂度内解决此题吗?示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]提示:1 <= nums.length <= 10^5-10^4 <= nums[i] <= 10^41 <= k原创 2020-09-12 14:47:07 · 186 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]224. 基本计算器
实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。示例 1:输入: “1 + 1”输出: 2示例 2:输入: " 2-1 + 2 "输出: 3示例 3:输入: “(1+(4+5+2)-3)+(6+8)”输出: 23说明:你可以假设所给定的表达式都是有效的。请不要使用内置的库函数 eval。来源:力扣(LeetCode)链接:https://leetcode-cn.com原创 2020-09-05 13:20:26 · 154 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]128. 最长连续序列
给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-consecutive-sequence著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 public int longe原创 2020-09-02 12:34:42 · 164 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]41. 缺失的第一个正数
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-missing-positive著作权归领扣网络所有。商业转载请联系官方授原创 2020-08-14 10:33:31 · 163 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]212. 单词搜索 II
给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例:输入:words = [“oath”,“pea”,“eat”,“rain”] and board =[[‘o’,‘a’,‘a’,‘n’],[‘e’,‘t’,‘a’,‘e’],[‘i’,‘h’,‘k’,‘r’],[‘i’,‘f原创 2020-08-13 18:36:35 · 155 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]295. 数据流的中位数
中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例:addNum(1)addNum(2)findMedian() -> 1.5addNum(3)findMedian()原创 2020-08-08 11:22:19 · 184 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]124. 二叉树中的最大路径和
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:示例 2: private int max = Integer.MIN_VALUE; public int maxPathSum(TreeNode root) { order(root); return max; } private int order(TreeNode no原创 2020-08-05 15:05:55 · 160 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]72. 编辑距离
给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros (删除 ‘e’)示例 2:输入:word1 = “intenti原创 2020-08-05 14:30:03 · 157 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]76. 最小覆盖子串
给你一个字符串 S、一个字符串 T 。请你设计一种算法,可以在 O(n) 的时间复杂度内,从字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入:S = “ADOBECODEBANC”, T = “ABC”输出:“BANC”提示:如果 S 中不存这样的子串,则返回空字符串 “”。如果 S 中存在这样的子串,我们保证它是唯一的答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-window-substr原创 2020-08-05 13:56:02 · 158 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]273. 整数转换英文表示
将非负整数转换为其对应的英文表示。可以保证给定输入小于 231 - 1 。示例 1:输入: 123输出: “One Hundred Twenty Three”示例 2:输入: 12345输出: “Twelve Thousand Three Hundred Forty Five”示例 3:输入: 1234567输出: “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”示例 4:输入:原创 2020-07-15 11:50:44 · 263 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]23. 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-k-sorted-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:思想是先原创 2020-07-15 10:08:30 · 249 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]42. 接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/trapping-rain-water著作权原创 2020-07-13 20:51:01 · 186 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard][周赛]5188. 树节点的第 K 个祖先
给你一棵树,树上有 n 个节点,按从 0 到 n-1 编号。树以父节点数组的形式给出,其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。请你设计并实现 getKthAncestor(int node, int k) 函数,函数返回节点 node 的第 k 个祖先节点。如果不存在这样的祖先节点,返回 -1 。树节点的第 k 个祖先节点是从该节点到根节点路径上的第 k 个节点。示例:输入:[“TreeAncestor”,“getKthAncestor”,“getKthA转载 2020-06-14 17:15:39 · 265 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard][A]25. K 个一组翻转链表
这题非常适合拿来当练习题详细题解来源:(转载)图解k个一组翻转链表 public ListNode reverseKGroup(ListNode head, int k) { ListNode temp = new ListNode(0);// 引入头结点方便所有结点的统一处理,不需要对第一个k进行特殊处理 temp.next = head; ListNode crrNode = temp; ListNode preNode = temp; whi...原创 2020-05-21 12:44:33 · 381 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]面试题37. 序列化二叉树
面试题37. 序列化二叉树 // Encodes a tree to a single string. public String serialize(TreeNode root) { if (root == null) { return "[]"; } StringBuilder sb = new StringBuilder("["); Queue...原创 2020-04-20 09:42:39 · 223 阅读 · 0 评论 -
LeetCode-Algorithms-[Hard]297. 二叉树的序列化与反序列化
297. 二叉树的序列化与反序列化 // Encodes a tree to a single string. public String serialize(TreeNode root) { if (root == null) { return "[]"; } StringBuilder sb = new StringBuilder("["); Q...原创 2020-04-20 09:40:20 · 218 阅读 · 0 评论