LC 480. 滑动窗口中位数 题目描述这是 LeetCode 上的 480. 滑动窗口中位数 ,难度为 困难。 中位数是有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。 例如: $[2,3,4]$,中位数是 $3$ $[2,3]$,中位数是 $(2 + 3) / 2 = 2.5$ 给你一个数组 $nums$,有一个长度为 $k$ 的窗口从最左端滑动到最右端。 窗口中有 2021-02-03 滑动窗口 优先队列(堆)
LC 42. 接雨水 题目描述这是 LeetCode 上的 42. 接雨水 ,难度为 困难。 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 12345输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨 2021-02-02 模拟 数学 单调栈
LC 424. 替换后的最长重复字符 题目描述这是 LeetCode 上的 424. 替换后的最长重复字符 ,难度为 中等。 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 $k$ 次。 在执行上述操作后,找到包含重复字母的最长子串的长度。 注意:字符串长度 和 $k$ 不会超过 $10^4$。 示例 1:12345输入:s = "ABAB", k = 2输出:4解释 2021-02-02 双指针 滑动窗口
LC 41. 缺失的第一个正数 题目描述这是 LeetCode 上的 41. 缺失的第一个正数 ,难度为 困难。 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 进阶:你可以实现时间复杂度为 $O(n)$ 并且只使用常数级别额外空间的解决方案吗? 示例 1:123输入:nums = [1,2,0]输出:3示例 2:123输入:nums = [3,4,-1,1]输出:2示例 3:123输入:nums 2021-02-01 桶排序 原地哈希
LC 888. 公平的糖果棒交换 题目描述这是 LeetCode 上的 888. 公平的糖果棒交换 ,难度为 简单。 爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 根糖果棒的大小,B[j] 是鲍勃拥有的第 j 根糖果棒的大小。 因为他们是朋友,所以他们想交换一根糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。) 返回一个整数数组 ans,其中 ans[0] 是爱丽丝 2021-02-01 哈希表
LC 40. 组合总和 II 题目描述这是 LeetCode 上的 40. 组合总和 II ,难度为 中等。 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1: 123456789输入: ca 2021-01-31 DFS 回溯算法 组合总和问题
LC 39. 组合总和 题目描述这是 LeetCode 上的 39. 组合总和 ,难度为 中等。 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1:1234567输入:can 2021-01-31 DFS 回溯算法 组合总和问题
LC 38. 外观数列 题目描述这是 LeetCode 上的 38. 外观数列 ,难度为 简单。 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = “1” countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字 2021-01-31 模拟
LC 778. 水位上升的泳池中游泳 题目描述这是 LeetCode 上的 778. 水位上升的泳池中游泳 ,难度为 困难。 在一个 N x N 的坐标方格 grid 中,每一个方格的值 $grid[i][j]$ 表示在位置 $(i,j)$ 的平台高度。 现在开始下雨了。当时间为 $t$ 时,此时雨水导致水池中任意位置的水位为 $t$ 。 你可以从一个平台游向四周相邻的任意一个平台,但是前提是此时水位必须同时淹没这两个平台。 假定你可 2021-01-30 二分 并查集 BFS 最小生成树 Kruskal
LC 37. 解数独 题目描述这是 LeetCode 上的 37. 解数独 ,难度为 困难。 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3 x 3 宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字,空白格用 ‘.’ 表示。 示例: 123456789101 2021-01-29 DFS 回溯算法 数独问题
LC 36. 有效的数独 题目描述这是 LeetCode 上的 36. 有效的数独 ,难度为 中等。 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3 x 3 宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字,空白格用 '.' 2021-01-29 哈希表 位运算 数组 数独问题
LC 35. 搜索插入位置 题目描述这是 LeetCode 上的 35. 搜索插入位置 ,难度为 简单。 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。 如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1:123输入: [1,3,5,6], 5输出: 2示例 2:123输入: [1,3,5,6], 2输出: 1示例 3:123输入: [1,3,5,6], 7输出 2021-01-29 模拟 二分
LC 1631. 最小体力消耗路径 题目描述这是 LeetCode 上的 1631. 最小体力消耗路径 ,难度为 中等。 你准备参加一场远足活动。 给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row, col) 的高度。 一开始你在最左上角的格子 (0, 0) ,且你希望去最右下角的格子 (rows-1, columns-1) (注意下标从 0 开始编号 2021-01-29 并查集 最小生成树 Kruskal
LC 724. 寻找数组的中心下标 题目描述这是 LeetCode 上的 724. 寻找数组的中心下标 ,难度为 中等。 给你一个整数数组 nums,请编写一个能够返回数组 “中心下标” 的方法。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果数组不存在中心下标,返回 -1 。 如果数组有多个中心下标,应该返回最靠近左边的那一个。 注意:中心下标可能出现在数组的两端。 示例 1:123456 2021-01-27 前缀和
LC 32. 最长有效括号 题目描述这是 LeetCode 上的 32. 最长有效括号 ,难度为 困难。 给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 1:12345输入:s = "(()"输出:2解释:最长有效括号子串是 "()"示例 2:12345输入:s = ")()())" 2021-01-26 栈 括号问题