随笔分类 -  LeetCode

上一页 1 2 3 4 5 6 7 8 ··· 13 下一页
摘要:作为项目经理,你规划了一份需求的技能清单 req_skills,并打算从备选人员名单 people 中选出些人组成一个「必要团队」( 编号为 i 的备选人员 people[i] 含有一份该备选人员掌握的技能列表)。 所谓「必要团队」,就是在这个团队中,对于所需求的技能列表 req_skills 中列 阅读全文
posted @ 2023-07-05 01:36 失控D大白兔
摘要:给你一个整数n,如果两个整数 x 和 y 满足下述条件,则认为二者形成一个质数对: * 1 prime(10e6,true); bool flag = false; void getprime(){//埃氏筛预处理 for(int i=2;i> findPrimePairs(int n) { if( 阅读全文
posted @ 2023-07-02 16:26 失控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大白兔
摘要:###一 . 子集 给你一个整数数组 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大白兔
摘要:给你一个整数数组 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大白兔

上一页 1 2 3 4 5 6 7 8 ··· 13 下一页