LC 678. 有效的括号字符串 题目描述这是 LeetCode 上的 678. 有效的括号字符串 ,难度为 中等。 给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。 有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 )。 任何右括号 ) 必须有相应的左括号 ( 。 左括号 ( 必须在对应的右括号之前 )。 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。 2021-09-12 动态规划 模拟 有效括号问题
LC 600. 不含连续1的非负整数 题目描述这是 LeetCode 上的 600. 不含连续1的非负整数 ,难度为 困难。 给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含连续的1的个数。 示例 1:12345678910111213输入: 5输出: 5解释: 下面是带有相应二进制表示的非负整数<= 5:0 : 01 : 12 : 103 : 114 : 1005 : 101其中,只有整数3违反规则(有 2021-09-11 数位 DP
LC 1894. 找到需要补充粉笔的学生编号 题目描述这是 LeetCode 上的 1894. 找到需要补充粉笔的学生编号 ,难度为 中等。 一个班级里有 n 个学生,编号为 0 到 n - 1 。每个学生会依次回答问题,编号为 0 的学生先回答,然后是编号为 1 的学生,以此类推,直到编号为 n - 1 的学生,然后老师会重复这个过程,重新从编号为 0 的学生开始回答问题。 给你一个长度为 n 且下标从 0 开始的整数数组 chalk 和一 2021-09-10 模拟 二分 前缀和
LC 68. 文本左右对齐 题目描述这是 LeetCode 上的 68. 文本左右对齐 ,难度为 困难。 给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ‘ ‘ 填充,使得每行恰好有 maxWidth 个字符。 要求尽可能均匀分配单词间的空格数量。如果 2021-09-09 模拟 字符串
LC 502. IPO 题目描述这是 LeetCode 上的 502. IPO ,难度为 困难。 假设 力扣(LeetCode)即将开始 IPO 。 为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最多 k 个不同的项目。 帮助 力扣 设计完成最多 k 个不同项目后得到最大总资本的方式。 给你 n 个项目。对于每个项目 i ,它都有一 2021-09-08 优先队列(堆) 贪心
LC 1221. 分割平衡字符串 题目描述这是 LeetCode 上的 1221. 分割平衡字符串 ,难度为 简单。 在一个 平衡字符串 中,’L’ 和 ‘R’ 字符的数量是相同的。 给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。 注意:分割得到的每个字符串都必须是平衡字符串。 返回可以通过分割得到的平衡字符串的 最大数量 。 示例 1:12345输入:s = "RLRRLLRLRL"输出:4解释 2021-09-07 双指针 贪心
LC 704. 二分查找 题目描述这是 LeetCode 上的 704. 二分查找 ,难度为 简单。 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1:12345输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 2021-09-06 二分
LC 470. 用 Rand7() 实现 Rand10() 题目描述这是 LeetCode 上的 470. 用 Rand7() 实现 Rand10() ,难度为 中等。 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。 不要使用系统的 Math.random() 方法。 示例 1:123输入: 1输出: [7]示例 2:123输入: 2输出: [8,4]示例 3:123输 2021-09-05 数学 位运算
LC 剑指 Offer 10- I. 斐波那契数列 题目描述这是 LeetCode 上的 剑指 Offer 10- I. 斐波那契数列 ,难度为 简单。 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是 2021-09-04 动态规划 线性 DP 矩阵快速幂 打表 记忆化搜索
LC 面试题 17.14. 最小K个数 题目描述这是 LeetCode 上的 面试题 17.14. 最小K个数 ,难度为 中等。 设计一个算法,找出数组中最小的 $k$ 个数。以任意顺序返回这k个数均可。 示例:123输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4] 提示: $0 <= len(arr) <= 100000$ $0 <= k <= \min(1000 2021-09-03 优先队列(堆) 排序
LC 剑指 Offer 22. 链表中倒数第k个节点 题目描述这是 LeetCode 上的 剑指 Offer 22. 链表中倒数第k个节点 ,难度为 简单。 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 示例:123给定一个链表: 1->2- 2021-09-02 栈 队列 链表 快慢指针
LC 165. 比较版本号 题目描述这是 LeetCode 上的 165. 比较版本号 ,难度为 中等。 给你两个版本号 version1 和 version2 ,请你比较它们。 版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2 2021-09-01 模拟
LC 1109. 航班预订统计 题目描述这是 LeetCode 上的 1109. 航班预订统计 ,难度为中等。 这里有 $n$ 个航班,它们分别从 $1$ 到 $n$ 进行编号。 有一份航班预订表 bookings,表中第 $i$ 条预订记录 $bookings[i] = [first_i, last_i, seats_i]$ 意味着在从 $first_i$ 到 $last_i$ (包含 $first_i$ 和 $last_i$ 2021-08-31 差分 区间求和问题 线段树
LC 528. 按权重随机选择 题目描述这是 LeetCode 上的 528. 按权重随机选择 ,难度为 中等。 给定一个正整数数组 $w$ ,其中 $w[i]$ 代表下标 $i$ 的权重(下标从 $0$ 开始),请写一个函数 pickIndex ,它可以随机地获取下标 $i$,选取下标 $i$ 的概率与 $w[i]$ 成正比。 例如,对于 $w = [1, 3]$,挑选下标 $0$ 的概率为 $1 / (1 + 3) = 0. 2021-08-30 模拟 二分 前缀和
LC 1588. 所有奇数长度子数组的和 题目描述这是 LeetCode 上的 1588. 所有奇数长度子数组的和 ,难度为 简单。 给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。 子数组 定义为原数组中的一个连续子序列。 请你返回 arr 中 所有奇数长度子数组的和 。 示例 1:123456789101112131415输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] 2021-08-29 前缀和 数学