随笔分类 - LeetCode / LeetCode困难速刷
摘要:堆箱子。给你一堆n个箱子,箱子宽 wi、深 di、高 hi。箱子不能翻转,将箱子堆起来时,下面箱子的宽度、高度和深度必须大于上面的箱子。 实现一种方法,搭出最高的一堆箱子。箱堆的高度为每个箱子高度的总和。 ###1. 排序 + 动态规划 随便按一个维度排序,然后二重循环加判断进行动态规划转移 如果从
阅读全文
posted @ 2023-07-07 16:41
失控D大白兔
摘要:给你一个整数数组 nums ,返回其中按位与和为零三元组的数目。 ###1. 状态压缩 + 哈希 ``` class Solution { public: int countTriplets(vector& nums) { vector cnt(1 & nums) { vector cnt(1 <<
阅读全文
posted @ 2023-07-06 23:17
失控D大白兔
摘要:###1. 状态压缩 + 动态规划 顺序不重要,依次枚举数组1的每个数,和数组2进行组合计算 ``` class Solution { public: int minimumXORSum(vector& nums1, vector& nums2) { int n = nums1.size(); if
阅读全文
posted @ 2023-07-05 13:49
失控D大白兔
摘要:给你一个整数 n 表示某所大学里课程的数目,编号为 1 到 n ,数组 relations 中, relations[i] = [xi, yi] 表示一个先修课的关系,也就是课程 xi 必须在课程 yi 之前上。同时你还有一个整数 k 。 在一个学期中,你 最多 可以同时上 k 门课,前提是这些课的
阅读全文
posted @ 2023-07-05 01:41
失控D大白兔
摘要:作为项目经理,你规划了一份需求的技能清单 req_skills,并打算从备选人员名单 people 中选出些人组成一个「必要团队」( 编号为 i 的备选人员 people[i] 含有一份该备选人员掌握的技能列表)。 所谓「必要团队」,就是在这个团队中,对于所需求的技能列表 req_skills 中列
阅读全文
posted @ 2023-07-05 01:36
失控D大白兔
摘要:你需要把所有 n 个整数分到这些篮子中,且每个篮子 至多 有 2 个整数。 一种分配方案的与和定义为每个数与它所在篮子编号的 按位与运算结果之和。 请你返回将 nums 中所有数放入 numSlots 个篮子中的最大与和。 ###1. 状态压缩 + 动态规划 这里的状态压缩就是枚举篮子的全部状态 数
阅读全文
posted @ 2023-07-02 00:54
失控D大白兔
摘要:给你一个整数数组 nums 和一个整数 k 。你需要将这个数组划分到 k 个相同大小的子集中,使得同一个子集里面没有两个相同的元素。 一个子集的不兼容性是该子集里面最大值和最小值的差。 请你返回将数组分成 k 个子集后,各子集 不兼容性的和的最小值 ,如果无法分成分成 k 个子集,返回 -1
阅读全文
posted @ 2023-06-30 21:04
失控D大白兔
摘要:如果两个机器人发生碰撞,则将 健康度较低的机器人从路线中 移除 ,并且另一个机器人的健康度减少 1 。 幸存下来的机器人将会继续沿着与之前相同的方向前进。如果两个机器人的健康度相同,则将二者都从路线中移除 ###1. 单调栈 ``` class Solution { public: vector s
阅读全文
posted @ 2023-06-28 00:29
失控D大白兔
摘要:给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time ,分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠: 一位需要 付费 的油漆匠,刷第 i 堵墙需要花费 time[i] 单位的时间,开销为 cost[i] 单位的钱。 一位 免费 的油漆匠,刷 任意 一堵墙的时间
阅读全文
posted @ 2023-06-21 01:47
失控D大白兔
摘要:如果两个组中的每个点都与另一组中的一个或多个点连接,则称这两组点是连通的 返回连通两组点所需的最小成本 ###1. 状态压缩 + 动态规划 ``` class Solution { public: int connectTwoGroups(vector>& cost) { //这里使用状态压缩记录连
阅读全文
posted @ 2023-06-20 08:46
失控D大白兔
摘要:给你两个长度为 n 、下标从 0 开始的整数数组 nums1 和 nums2 另给你一个下标从 1 开始的二维数组 queries ,其中 queries[i] = [xi, yi] 对于第 i 个查询,在所有满足 nums1[j] >= xi 且 nums2[j] >= yi 的下标 j (0 贪
阅读全文
posted @ 2023-06-12 03:17
失控D大白兔
摘要:给你一棵树,树上有 n 个节点,按从 0 到 n-1 编号。树以父节点数组的形式给出 其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。 树节点的第 k 个祖先节点是从该节点到根节点路径上的第 k 个节点 返回数的第k个祖先节点,如果不存在返回-1 ###1. 倍增查找
阅读全文
posted @ 2023-06-12 00:25
失控D大白兔
摘要:给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边。 图用一个大小为 n 下标从 0 开始的数组 edges 表示,节点 i 到节点 edges[i] 之间有一条有向边。 如果节点 i 没有出边,那么 edges[i] == -1 。 1. 深度优先搜
阅读全文
posted @ 2023-06-09 02:41
失控D大白兔
摘要:好人:该角色只说真话。 坏人:该角色可能说真话,也可能说假话 每个人都有对其他人的描述,存为一个n×n的二维矩阵 0认为是坏人,1认为是好人,2不做评价 返回最大好人数目 ###1. 暴力列举 + 二进制状态位 基于矛盾判断该状态是否有效 ``` class Solution { public: i
阅读全文
posted @ 2023-06-08 23:48
失控D大白兔
摘要:给你两个长度为 n 的字符串 s1 和 s2 ,以及一个字符串 evil 。请你返回 好字符串 的数目。 好字符串 的定义为:它的长度为 n ,字典序大于等于 s1 ,字典序小于等于 s2 ,且不包含 evil 为子字符串 ###一. 数位dp + KMP算法 ``` const int MOD =
阅读全文
posted @ 2023-06-08 03:38
失控D大白兔
摘要:用边长为整数的正方形填充m×n的平面空间 返回最少的正方形 ###1. 纯纯的暴力 不存在某种贪心和动态规划可以完成状态的转移 只能暴力在每一个位置填充每一种情况的正方形 ``` class Solution { public: int ans; int tilingRectangle(int n,
阅读全文
posted @ 2023-06-08 01:39
失控D大白兔
摘要:给定一个按 非递减顺序 排列的数字数组 digits 。你可以用任意次数 digits[i] 来写的数字。 例如,如果 digits = ['1','3','5'],我们可以写数字,如 '13', '551', 和 '1351315'。 返回 可以生成的小于或等于给定整数 n 的正整数的个数 ###
阅读全文
posted @ 2023-06-07 22:28
失控D大白兔
摘要:给定一个正整数 n ,请你统计在 [0, n] 范围的非负整数中,有多少个整数的二进制表示中不存在连续的 1 。 ####1. 数位dp ``` class Solution { public: int findIntegers(int n) { int m= __lg(n); //转字符串逐位递归
阅读全文
posted @ 2023-06-07 04:50
失控D大白兔
摘要:给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。 ####一. 数位dp ``` class Solution { public: int countDigitOne(int n) { auto s = to_string(n); //转字符串逐位递归分析 int m =
阅读全文
posted @ 2023-06-07 04:04
失控D大白兔
摘要:给定正整数 n,返回在 [1, n] 范围内具有 至少 1 位 重复数字的正整数的个数。 ####一. 数位dp + 逆向思维 首先将问题转化为不含重复数字的个数 定义f(i,mask,islimit,isnum) 表示构造第i位及之后数位的合法方案数 mask 表示前面数的状态,用于判断枚举数是否
阅读全文
posted @ 2023-06-07 03:40
失控D大白兔

浙公网安备 33010602011771号