LC 1822. 数组元素积的符号 题目描述这是 LeetCode 上的 1822. 数组元素积的符号 ,难度为 简单。 已知函数 signFunc(x) 将会根据 x 的正负返回特定值: 如果 x 是正数,返回 1 。 如果 x 是负数,返回 -1 。 如果 x 是等于 0 ,返回 0 。 给你一个整数数组 nums。令 product 为数组 nums 中所有元素值的乘积。 返回 signFunc(product) 。 示例 2022-10-27 模拟
LC 862. 和至少为 K 的最短子数组 题目描述这是 LeetCode 上的 862. 和至少为 K 的最短子数组 ,难度为 困难。 给你一个整数数组 nums 和一个整数 k ,找出 nums 中和至少为 k 的 最短非空子数组 ,并返回该子数组的长度。如果不存在这样的子数组,返回 -1 。 子数组是数组中连续 的一部分。 示例 1:123输入:nums = [1], k = 1输出:1示例 2:123输入:nums = [1,2], 2022-10-26 二分 前缀和 树状数组 离散化
LC 312. 戳气球 题目描述这是 LeetCode 上的 312. 戳气球 ,难度为 困难。 有 n 个气球,编号为 0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。 戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。 这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号。 如果 i 2022-10-25 动态规划 区间 DP
LC 621. 任务调度器 题目描述这是 LeetCode 上的 621. 任务调度器 ,难度为 中等。 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表,其中每个字母表示一种不同种类的任务。 任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。 在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。 然而,两个相同种类的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 2022-10-25 脑筋急转弯 构造
LC 934. 最短的桥 题目描述这是 LeetCode 上的 934. 最短的桥 ,难度为 中等。 给你一个大小为 n x n 的二元矩阵 grid,其中 1 表示陆地,0 表示水域。 岛 是由四面相连的 1 形成的一个最大组,即不会与非组内的任何其他 1 相连。grid 中 恰好存在两座岛 。 你可以将任意数量的 0 变为 1 ,以使两座岛连接起来,变成 一座岛 。 返回必须翻转的 0 的最小数目。 示例 1:123输 2022-10-25 并查集 双向 BFS
LC 915. 分割数组 题目描述这是 LeetCode 上的 915. 分割数组 ,难度为 中等。 给定一个数组 nums,将其划分为两个连续子数组 left 和 right,使得: left 中的每个元素都小于或等于 right 中的每个元素。 left 和 right 都是非空的。 left 的长度要尽可能小。 在完成这样的分组后返回 left 的长度。 用例可以保证存在这样的划分方法。 示例 1:12345输入 2022-10-24 模拟
LC 1768. 交替合并字符串 题目描述这是 LeetCode 上的 1768. 交替合并字符串 ,难度为 简单。 给你两个字符串 word1 和 word2。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 示例 1:12345678输入:word1 = "abc", word2 = "pq 2022-10-23 模拟
LC 1235. 规划兼职工作 题目描述这是 LeetCode 上的 1235. 规划兼职工作 ,难度为 困难。 你打算利用空闲时间来做兼职工作赚些零花钱。 这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 profit[i]。 给你一份兼职工作表,包含开始时间 startTime,结束时间 endTime 和预计报酬 profit 三个数组,请你计算并返回可以获得的最 2022-10-22 序列 DP 二分 排序
LC 901. 股票价格跨度 题目描述这是 LeetCode 上的 901. 股票价格跨度 ,难度为 中等。 编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。 今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。 例如,如果未来 7 天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1 2022-10-21 单调栈 分块
LC 779. 第K个语法符号 题目描述这是 LeetCode 上的 779. 第K个语法符号 ,难度为 中等。 我们构建了一个包含 n 行( 索引从 1 开始 )的表。首先在第一行我们写上一个 0。接下来的每一行,将前一行中的 0 替换为 01,1 替换为 10。 例如,对于 n = 3,第 1 行是 0 ,第 2 行是 01,第 3 行是 0110 。 给定行数 n 和序数 k,返回第 n 行中第 k 个字符。( k 2022-10-20 DFS 递归
LC 1700. 无法吃午餐的学生数量 题目描述这是 LeetCode 上的 1700. 无法吃午餐的学生数量 ,难度为 简单。 学校的自助午餐提供圆形和方形的三明治,分别用数字 $0$ 和 $1$ 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。 餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里,每一轮: 如果队列最前面的学生 喜欢 栈顶的三明治,那么会 拿走它 并离开队列。 否则,这名学生会 放 2022-10-19 哈希表 模拟 计数
LC 904. 水果成篮 题目描述这是 LeetCode 上的 904. 水果成篮 ,难度为 中等。 你正在探访一家农场,农场从左到右种植了一排果树。 这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果种类。 你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果: 你只有两个篮子,并且每个篮子只能装单一类型 的水果。每个篮子能够装的水果总量没有限制 2022-10-17 模拟 双指针 滑动窗口
LC 886. 可能的二分法 题目描述这是 LeetCode 上的 886. 可能的二分法 ,难度为 中等。 给定一组 n 人(编号为 1, 2, ..., n), 我们想把每个人分进任意大小的两组。 每个人都可能不喜欢其他人,那么他们不应该属于同一组。 给定整数 n 和数组 dislikes ,其中 $dislikes[i] = [a_i, b_i]$ ,表示不允许将编号为 $a_i$ 和 $b_i$ 的人归入同一组。 当 2022-10-16 DFS 并查集 二分图 染色法
LC 1441. 用栈操作构建数组 题目描述这是 LeetCode 上的 1441. 用栈操作构建数组 ,难度为 中等。 给你一个数组 target 和一个整数 n。 每次迭代,需要从 list = { 1 , 2 , 3 ..., n } 中依次读取一个数字。 请使用下述操作来构建目标数组 target : "Push":从 list 中读取一个新元素, 并将其推入数组中。 " 2022-10-15 模拟 构造
LC 940. 不同的子序列 II 题目描述这是 LeetCode 上的 940. 不同的子序列 II ,难度为 困难。 给定一个字符串 s,计算 s 的 不同非空子序列 的个数。 因为结果可能很大,所以返回答案需要对 $10^9 + 7$ 取余 。 字符串的 子序列 是经由原字符串删除一些(也可能不删除)字符但不改变剩余字符相对位置的一个新字符串。 例如,"ace" 是 "abcde" 的一 2022-10-14 动态规划 序列 DP