06 2023 档案
摘要:给你一个整数数组 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大白兔
摘要:###一 . 子集 给你一个整数数组 nums ,数组中的元素 互不相同,返回该数组所有可能的子集 #### 1. 回溯法 对每个数做选择,放入当前位,同时固定访问顺序,只访问下标更大的数,避免重复 回溯法 ``` class Solution { public: vector> res; vect
阅读全文
posted @ 2023-06-23 23:15
失控D大白兔
摘要:给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数。如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列: 对于 0 & nums) { int mod = 1e9+7; int m = nums.size(); int memo[m][m f = [&]
阅读全文
posted @ 2023-06-23 20:06
失控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大白兔
摘要:### 一. 集合运算基础 使用二进制表示集合的选取状态 同样我们能快速的运用二进制实现一些遍历、交集、补集的操作 也能使用二进制存储对应状态,实现动态规划和剪枝 ####1. 集合与集合运算 ``` A&B //求集合交集操作 A|B //求集合并集操作 A&∼B //做差,在集合A中剔除B的元素
阅读全文
posted @ 2023-06-16 01:09
失控D大白兔
摘要:``` INT_MAX = 2**63-1 = sys.maxsize #最大整型 INT_MIN = -2**63 = -sys.maxsize -1 #最小整型 float('inf') #比其它数都大的数 float('-inf') #比其它数都小的数 ``` 遍历枚举 ``` for val
阅读全文
posted @ 2023-06-14 01:05
失控D大白兔
摘要:给你一个整数数组 nums 和两个整数:left 及 right 找出 nums 中连续、非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个数 ###1. 遍历区间右端点 + 同时记录满足条件的左边点位 数组中不能含有大于 right的元素, 且至少含有一个
阅读全文
posted @ 2023-06-12 18:39
失控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大白兔
摘要:给你两个数字字符串 num1 和 num2 ,以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件,我们称它是一个好整数: * num1 f = [&](int i, int sum, bool is_limit) -> int { if (sum > max_sum)
阅读全文
posted @ 2023-06-07 00:39
失控D大白兔
摘要:本质上就是**动态规划**,只需记录位数和前一个数的状态,其后满足条件的个数是固定的 数位dp还要多记录一个受限状态,以及前面全为0的特殊处理状态 处理范围内的数时,相当于利用前缀和的思想进行处理 我们可以用f(n)表示[0,n]的所有满足条件的个数,我们对于[l,r] 区间内满足条件的个数,就可以
阅读全文
posted @ 2023-06-04 17:59
失控D大白兔
摘要:给定你一个整数数组 nums 我们要将 nums 数组中的每个元素移动到 A 数组 或者 B 数组中,使得 A 数组和 B 数组不为空,并且 average(A) == average(B) ####1. 折半查找+二进制枚举 首先将问题转化为求目标和为特定值 将所有数乘以n减去总和,转化成为求目标
阅读全文
posted @ 2023-06-04 17:56
失控D大白兔
摘要:一般采用回溯法思想,但需要将问题进行转化,同时采用动态规划减小时间复杂度 ####1. [分割等和子数组](https://www.cnblogs.com/929code/p/16453098.html) ####2. [零钱兑换](https://www.cnblogs.com/929code/p
阅读全文
posted @ 2023-06-02 15:17
失控D大白兔
摘要:给你一个下标从 1 开始、大小为 m x n 的整数矩阵 mat,你可以选择任一单元格作为 起始单元格 从起始单元格出发,你可以移动到同一行或同一列 中的任何其他单元格,但前提是目标单元格的值严格大于当前单元格的值 求能访问的最多单元格数 ###1. 动态规划(超时) 如果对每一个点进行递归搜索,时
阅读全文
posted @ 2023-06-02 02:23
失控D大白兔

浙公网安备 33010602011771号