随笔分类 - LeetCode / LeetCode困难速刷
摘要:给你一个整数数组 nums 和一个 非负 整数 k 。 如果一个整数序列 seq 满足在范围下标范围 [0, seq.length - 2] 中存在 不超过 k 个下标 i 满足 seq[i] != seq[i + 1] ,那么我们称这个整数序列为好序列。 请你返回 nums 中好子序列的最长长度
阅读全文
摘要:有 n 堆石头排成一排,第 i 堆中有 stones[i] 块石头。 每次 移动 需要将 连续的 k 堆石头合并为一堆,而这次移动的成本为这 k 堆中石头的总数。 返回把所有石头合并成一堆的最低成本。如果无法合并成一堆,返回 -1 。 1. 前缀和 + 动态规划 首先分析需要合并(n-k)/(k-1
阅读全文
摘要:给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据)。 给你邮票的尺寸为 stampHeight x stampWidth 。我们想将邮票贴进二进制矩阵中,且满足以下限制和要求 : 覆盖所有空格子。 不覆盖任何被占据的格子。 我们可以放入任意数目的邮票。
阅读全文
摘要:给你一个下标从 0 开始的整数数组 nums 。 nums 一个长度为 k 的 子序列 指的是选出 k 个 下标 i0 < i1 < ... < ik-1 ,如果这个子序列满足以下条件,我们说它是 平衡的 : 对于范围 [1, k - 1] 内的所有 j ,nums[i] - nums[j] >=
阅读全文
摘要:一个公司准备组织一场会议,邀请名单上有 n 位员工。公司准备了一张圆形 的桌子,可以坐下任意数目的员工。 员工编号为 0 到 n - 1 。每位员工都有一位喜欢的员工,每位员工当且仅当他被安排在喜欢员工的旁边,他才会参加会议。 每位员工喜欢的员工不会是他自己。 给你一个下标从 0 开始的整数数组 f
阅读全文
摘要:节点 i 上的金币可以用下述方法之一进行收集: 收集所有金币,得到共计 coins[i] - k 点积分。如果 coins[i] - k 是负数,你将会失去 abs(coins[i] - k) 点积分。 收集所有金币,得到共计 floor(coins[i] / 2) 点积分。如果采用这种方法,节点
阅读全文
摘要:字符串的 引力 定义为:字符串中 不同 字符的数量。 例如,"abbca" 的引力为 3 ,因为其中有 3 个不同字符 'a'、'b' 和 'c' 。 给你一个字符串 s ,返回 其所有子字符串的总引力 。 子字符串 定义为:字符串中的一个连续字符序列。 1. 区间贡献法 从左往右遍历,优先计算左边
阅读全文
摘要:给你一个字符串 s 和一个整数 k ,请你将 s 分成 k 个 子字符串 ,使得每个子字符串变成半回文串需要修改的字符数目最少。 请你返回一个整数,表示需要修改的最少字符数目。 1. 动态规划 class Solution { public: int minimumChanges(string s,
阅读全文
摘要:给你一个下标从 0 开始的非负整数数组 nums 和两个整数 l 和 r 。 请你返回 nums 中子多重集合的和在闭区间 [l, r] 之间的子多重集合的数目 。 1. 多重背包 + 滑动窗口 class Solution { public: int countSubMultisets(vecto
阅读全文
摘要:现有一个有向图,其中包含 n 个节点,节点编号从 0 到 n - 1 。此外,该图还包含了 n 条有向边。 给你一个下标从 0 开始的数组 edges ,其中 edges[i] 表示存在一条从节点 i 到节点 edges[i] 的边。 你从节点 x 开始,通过边访问其他节点,直到你在此过程中再次访问
阅读全文
摘要:给你一棵 n 个节点的无向树,节点编号为 0 到 n - 1 。给你整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] = [ai, bi] 表示树中节点 ai 和 bi 有一条边 同时给你一个下标从 0 开始长度为 n 的整数数组 values ,其中 val
阅读全文
摘要:给你一个下标从 0 开始的二维整数数组 flowers 其中 flowers[i] = [starti, endi] 表示第 i 朵花的花期从 starti 到 endi 同时给你一个下标从 0 开始大小为 n 的整数数组 people ,people[i] 是第 i 个人来看花的时间 请你返回一个
阅读全文
摘要:一. 使用两个哈希实现 一个哈希进行直接索引,另一个哈希根据访问频率索引双向链表 /* 定义Node类 双链表节点,包含键、值、前驱、后继 定义LFUCache 类 变量 min_freq:当前最小频率层次 capacity:容量 key_to_node:根据键值索引节点的哈希 freq_to_du
阅读全文
摘要:给你一个下标从 1 开始、由 n 个整数组成的数组。 如果一组数字中每对元素下标的乘积都是一个完全平方数,则称这组数字是一个完全集 。 返回下标集 {1, 2, ..., n} 的 完全子集所能取到的最大元素和 1. 数学方法 这里选择从下而上,类似质数筛的方式进行枚举满足条件的完备集合 思考完全集
阅读全文
摘要:给你一个 n 个点的 简单有向图 (没有重复边的有向图),节点编号为 0 到 n - 1 。如果这些边是双向边,那么这个图形成一棵 树 。 给你一个整数 n 和一个 二维 整数数组 edges ,其中 edges[i] = [ui, vi] 表示从节点 ui 到节点 vi 有一条 有向边 。 边反转
阅读全文
摘要:给你两个长度都为 n 的字符串 s 和 t 。你可以对字符串 s 执行以下操作: 将 s 长度为 l (0 < l < n)的 后缀字符串 删除,并将它添加在 s 的开头。 比方说,s = 'abcd' ,那么一次操作中,你可以删除后缀 'cd' ,并将它添加到 s 的开头,得到 s = 'cdab
阅读全文
摘要:k 子序列指的是 s 的一个长度为 k 的 子序列 ,且所有字符都是唯一的,也就是说每个字符在子序列里只出现过一次。 定义 f(c) 为字符 c 在 s 中出现的次数。 k 子序列的 美丽值定义为这个子序列中每一个字符 c 的f(c)之和 ###1. 贪心 + 组合枚举 贪心选美丽值最大的字符,对于
阅读全文
摘要:给你一个长度为 n 下标从 0 开始的整数数组 receiver 和一个整数 k 总共有 n 名玩家,玩家 编号 互不相同,且为 [0, n - 1] 中的整数。 你需要从 n 名玩家中选择一名玩家作为游戏开始时唯一手中有球的玩家,球会被传 恰好 k 次 定义函数 f(x) 表示从编号为 x 的玩家
阅读全文
摘要:给你一个下标从 0 开始的数组 nums ,它包含非负整数,且全部为 2 的幂,同时给你一个整数 target 。 一次操作中,你必须对数组做以下修改: * 选择数组中一个元素 nums[i] ,满足 nums[i] > 1 。 * 将 nums[i] 从数组中删除。 * 在 nums 的末尾添加两
阅读全文
摘要:给你正整数 low ,high 和 k 。 如果一个数满足以下两个条件,那么它是 美丽的 : * 偶数数位的数目与奇数数位的数目相同。 * 这个整数可以被 k 整除。 请你返回范围 [low, high] 中美丽整数的数目。 ###1. 数位dp ``` class Solution { publi
阅读全文