2022-03-31:有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱, 以及不同程度的安静值(quietness) 为了方便起见,我们将编号为 x 的人简称为 "...给你一个数组 richer ,其中 richeri = ai, bi 表示 person ai 比 person bi 更有钱 另给你一个整数数组 quiet ,其中 quieti 是 person i...的安静值 richer 中所给出的数据 逻辑自洽 也就是说,在 person x 比 person y 更有钱的同时,不会出现 person y 比 person x 更有钱的情况 现在,返回一个整数数组...answer 作为答案,其中 answerx = y 的前提是: 在所有拥有的钱肯定不少于 person x 的人中,person y 是最安静的人(也就是安静值 quiety 最小的人)。...{ ans[i] = i } for l < r { // 如果队列不空 // 弹出一个入度为0的点 cur := zeroQueue[l] l++ // 1) 消除当前cur的影响
2023-02-11:给你两个整数 m 和 n 。构造一个 m x n 的网格,其中每个单元格最开始是白色, 请你用 红、绿、蓝 三种颜色为每个单元格涂色。...所有单元格都需要被涂色, 涂色方案需要满足:不存在相邻两个单元格颜色相同的情况。 返回网格涂色的方法数。因为答案可能非常大。 返回 对 109 + 7 取余 的结果。 1 n <= 1000。...("ans3 = {}", ans3); } static MOD: i32 = 1000000007; fn color_the_grid(m: i32, n: i32) -> i32 {...as usize) .collect(); return process(0, 0, 0, n, m, &mut dp); } fn process(i: i32, j: i32, s...: i32, n: i32, m: i32, dp: &mut Vec>>) -> i32 { if i == n { return 1; }
2023-02-11:给你两个整数 m 和 n 。构造一个 m x n 的网格,其中每个单元格最开始是白色,请你用 红、绿、蓝 三种颜色为每个单元格涂色。...所有单元格都需要被涂色,涂色方案需要满足:不存在相邻两个单元格颜色相同的情况。返回网格涂色的方法数。因为答案可能非常大。返回 对 109 + 7 取余 的结果。1 n n...as usize) .collect(); return process(0, 0, 0, n, m, &mut dp);}fn process(i: i32, j: i32, s: i32..., n: i32, m: i32, dp: &mut Vec>>) -> i32 { if i == n { return 1; } if j
2022-11-07:给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边。...图用一个大小为 n 下标从 0 开始的数组 edges 表示,节点 i 到节点 edgesi 之间有一条有向边。如果节点 i 没有出边,那么 edgesi == -1 。...请你返回图中的 最长 环,如果没有任何环,请返回 -1 。输入:edges = 3,3,4,2,3。输出:3。答案2022-11-07:一个环指的是起点和终点是 同一个 节点的路径。用强联通分量。...[]).take(n as usize).collect(); for i in 0..n { if edges[i as usize] !...(0).take(self.n as usize).collect(); self.scc = repeat(0).take(self.n as usize).collect();
2022-10-30:给你一个长度为 n 的整数数组 rolls 和一个整数 k 。...你扔一个 k 面的骰子 n 次,骰子的每个面分别是 1 到 k , 其中第 i 次扔得到的数字是 rollsi 。 请你返回 无法 从 rolls 中得到的 最短 骰子子序列的长度。...扔一个 k 面的骰子 len 次得到的是一个长度为 len 的 骰子子序列 。 注意 ,子序列只需要保持在原数组中的顺序,不需要连续。...这次java的运行速度最高,比rust都强了不少。c++表现不好,不见运行速度低,而且内存占用大。rust内存占用最小,go语言次之。 时间复杂度:O(n+k)。 空间复杂度:O(k)。
2022-04-25:给定两个长度为N的数组,a[]和b[] 也就是对于每个位置i来说,有a[i]和b[i]两个属性 i a[i] b[i] j a[j] b[j] 现在想为了i,选一个最好的j位置,搭配能得到最小的如下值...答案2022-04-25: 题目描述:给定两个长度为 N 的数组 a[] 和 b[],对于每个位置 i,有 a[i] 和 b[i] 两个属性。...现在想为了 i,选一个最优的 j 位置,搭配能得到最小的值 (a[i]+a[j])^2+b[i]+b[j]。定义这个最小的值为 i 的最 in 值。求返回每个位置 i 的最 in 值。...遍历数组 a 和 b,依次计算出每个位置 i 和 j 的最 in 值。 2. 对于每个位置 i,遍历数组 a 和 b,计算出所有的最小值。 3. 返回所有位置的最小值。 时间复杂度:O(N^2)。...新建一个栈,对每个位置 i 进行遍历,找到最好的 j 位置,使得 S(j)+T(j)/a[i] 最小,并将其压入栈中。 4. 将所有位置按照 a 值从大到小排序。 5.
用go语言,Alice 和 Bob 正在进行一个有 n 个关卡的游戏,其中每个关卡要么是困难模式(possible[i] == 0),要么是简单模式(possible[i] == 1)。...两位玩家都会采取最优策略,以争取获得更多的分数。Alice 希望知道她至少需要完成多少个关卡,才能确保自己的得分超过 Bob。...在计算过程中,简单模式的关卡 (+1) 会增加得分,而困难模式的关卡 (-1) 则会减少得分。 • 公式为: tot = (简单模式关卡数 * 2) - n,其中 n 为关卡总数。...2.评估 Alice 的得分与 Bob 的得分: • 初始化一个 pre 变量,用于记录 Alice 目前的得分。...根据以上分析,Alice 需要完成 至少一个 关卡才能确保得分超过 Bob,因此结果是 1。
用go语言,给定一个整数 n 和一个二维数组 requirem)ents,其中每个元素 requirements[i] = [endi, cnti] 表示在要求中末尾的下标以及逆序对的数量。...任务是返回所有可能的数组排列 perm = [0, 1, 2, ..., n - 1] 的数量,使得对于所有的 requirements,都满足 perm[0..endi] 中恰好有 cnti 个逆序对...2.编写函数 numberOfPermutations(n, requirements) 来计算符合要求的排列数量。 3.初始化一个要求映射 reqMap,记录每个末尾下标及其逆序对数量的要求。...同时找出最大的逆序对数量 maxCnt。 4.构建动态规划数组 dp,用于存储计算结果,其中 dp[i][j] 表示前 i 个数中逆序对数量为 j 的排列数。...总的时间复杂度: • 针对每个位置及逆序对情况进行递归计算,时间复杂度为 O(n * maxCnt)。 • 最终结果取模操作的时间复杂度为 O(1)。
用go语言,给定一个长度为 n 的整数数组 nums。...对于数组中的每个位置 i(范围是 0 到 n-1),我们定义一个子数组,区间为 nums[start ... i],其中 start 等于 max(0, i - nums[i])。...任务是计算并返回对于每个位置 i,所对应的子数组内所有元素的累加和。 简而言之,就是对于每个元素,根据它的值确定子数组的起始位置,然后求该子数组的元素和。...计算每个位置元素对总和的贡献 • 对于每个位置 i,对应的元素为 nums[i],它出现于 sd 个子数组里。 • 所以 nums[i] 的总加和值贡献就是 nums[i] * sd。...时间复杂度分析 • 第一次循环(遍历 nums):O(n) • 第二次循环(遍历 nums 计算答案):O(n) • 总体时间复杂度:O(n),其中 n 是数组长度 空间复杂度分析 • 额外使用了一个长度为
2022-04-25:给定两个长度为N的数组,a[]和b[]也就是对于每个位置i来说,有ai和bi两个属性 i ai bi j aj bj现在想为了i,选一个最好的j位置,搭配能得到最小的如下值...1位置搭配,可以得到最in值 : 1713位置和1位置搭配,可以得到最in值 : 1744位置和2位置搭配,可以得到最in值 : 219注意 : i位置可以和i位置(自己)搭配,并不是说i和j一定要是不同的位置返回每个位置...答案2022-04-25:题目描述:给定两个长度为 N 的数组 a[] 和 b[],对于每个位置 i,有 ai 和 bi 两个属性。...现在想为了 i,选一个最优的 j 位置,搭配能得到最小的值 (ai+aj)^2+bi+bj。定义这个最小的值为 i 的最 in 值。求返回每个位置 i 的最 in 值。...解法一:暴力法遍历数组 a 和 b,依次计算出每个位置 i 和 j 的最 in 值。对于每个位置 i,遍历数组 a 和 b,计算出所有的最小值。返回所有位置的最小值。时间复杂度:O(N^2)。
2022-04-22:给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 'X' 或者是一个空位 '.' ,返回在甲板 board 上放置的 战舰 的数量。...换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。...甲板上的战舰。 来自米哈游。 答案2022-04-22: 并查集或者岛问题都行,但这不是最优解。 数战舰的左上角,统计左上角的点的个数就行。 时间复杂度:O(N**2)。 代码用rust编写。
给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。 ? 福大大 答案2021-07-15: 小根堆+是否访问矩阵。...思路跟昨天的每日一题差不多,但代码相对复杂。昨天的每日一题,是两端的柱子逐步向中间移动,收集到的雨水就是答案。今天的每日一题,是一圈的柱子逐个向中间移动,收集到的雨水就是答案。...一圈的柱子需要放在小根堆中。新增矩阵记录是否访问过。 时间复杂度:O(N*N*logN)。 空间复杂度:约O(N*N)。 代码用golang编写。...:= len(heightMap) M := len(heightMap[0]) isEnter := make([][]bool, N) for i := 0; i N;...1][col] = true Push(&heap, NewNode(heightMap[N-1][col], N-1, col)) } for row := N - 1
2024-05-22:用go语言,你有一个包含 n 个整数的数组 nums。 每个数组的代价是指该数组中的第一个元素的值。 你的目标是将这个数组划分为三个连续且互不重叠的子数组。...大体步骤如下: 1.初始化操作: • 从 main 函数开始,创建一个整型数组 nums,其中包含 [1, 2, 3, 12]。...• 对于给定的数组 nums,迭代从第二个元素开始的所有元素: • 如果元素 x 小于当前最小值 fi,则将第二小值 se 更新为当前最小值 fi,并更新最小值为 x。...• 返回结果为数组第一个元素 nums[0] 与找到的两个最小值 fi 和 se 的和。 3.解问题: • 对于输入数组 [1, 2, 3, 12],算法将找到两个最小值为 1 和 2。...• 算法返回结果为 1 + 1 + 2 = 4,此结果表示划分三个子数组后的最小代价之和。 4.时间复杂度: • 迭代一次数组,需要 O(n) 的时间复杂度,其中 n 是数组的长度。
2022-05-21:给定一个数组arr,长度为n, 表示n个服务员,每个人服务一个人的时间。 给定一个正数m,表示有m个人等位。 如果你是刚来的人,请问你需要等多久?...假设:m远远大于n,比如n的9次方,该怎么做? 来自谷歌。 答案2022-05-21: 方法一:小根堆。时间复杂度:O(m*logN)。 方法二:二分法。...时间复杂度:O(N*logm)。 代码用rust编写。...("测试开始"); for _i in 0..test_time { let n: i32 = rand::thread_rng().gen_range(0, len) + 1;...[]; let n = arr.len() as i32; for i in 0..n { heap.push(vec!
2022-03-25:给定一个长度为 N 的字符串 S,由字符'a'和'b'组成,空隙由 '?' 表示。...你的任务是用a字符或b字符替换每个间隙, 替换完成后想让连续出现同一种字符的最长子串尽可能短。 例如,S = "aa??bbb", 如果将"??"...那么方案二是更好的结果,返回3。 S的长度 <= 10^6。 来自CMU入学申请考试。 答案2022-03-25: 根据S的长度 是O(N)才能过。...1.左 == 右,中间问号长度是奇数。a?a变成aba。 2.左 == 右,中间问号长度是偶数。a????a变成abaaba。 3.左 != 右,中间问号长度是偶数。a????b变成ababab。...= 右,中间问号长度是大于1的奇数。a???b变成abaab或者aabab。 5.左 != 右,中间问号长度等于1。a?b的问号根据ab数量决定,谁小成全谁。相等的时候,成全左边。
2023-04-13:给定一个字符串数组strs,其中每个字符串都是小写字母组成的,如果i 个互补对(complementary...答案2023-04-13:这道题有两种算法:算法一该算法使用暴力方法,时间复杂度为 O(N^2*M),其中,N 表示字符串数组的长度,M 表示单个字符串的平均长度。空间复杂度为 O(1)。...该算法可以有效地避免枚举所有可能的字符串排列组合,从而实现了较优的时间复杂度。该算法时间复杂度为 O(N*M),其中,N 表示字符串数组的长度,M 表示单个字符串的平均长度。空间复杂度为 O(N)。...其中,空间复杂度主要来自于 status 哈希表的存储。算法过程如下:初始化 hash map status,用于统计每种状态下的字符串数量。遍历每个字符串 str。...补充说明:该算法的思路是通过统计字符串中每个字符出现的奇偶次数,将字符串转化成一个状态值。如果两个字符串可以组成互补对,那么它们的状态值必须相同或者只有一位不同。
流条目不仅仅是一个字符串,而是由一个或多个字段-值对组成。这样,流中的每个条目都是结构化的,就像以 CSV 格式写入的只追加文件,其中每行包含多个分隔的字段。...然而,如果当前毫秒时间比前一个条目时间小,那么前一个条目时间将被使用,因此即使时钟倒退,ID 的单调递增属性仍然成立。序列号用于在同一毫秒创建的条目。...因此,XRANGE 支持在末尾添加一个可选的 COUNT 选项。通过指定一个 count,我可以只获取前 N 个条目。 如果我想获取更多,可以使用返回的最后一个 ID,将序列部分加一,然后再次查询。...消费者组 当任务是让不同的客户端消费同一个流时,XREAD 已经提供了一种将消息分发给 N 个客户端的方法,甚至还可以使用副本以提供更多的读取可扩展性。...所以基本上来说,Kafka 的分区更类似于使用 N 个不同的 Redis 键。而 Redis 消费者组则是一个服务器端的消息负载均衡系统,将给定流中的消息分发到 N 个不同的消费者。
第二个参数是标识Stream中每个条目的条目ID。...,则使用前一个条目时间,因此如果时钟回拨,ID的单调递增属性仍然存在。...默认情况下,每个新项目都将传递给等待指定Stream中的数据的每个消费者。这个行为与阻止列表不同,其中每个消费者将获得不同的元素。但是,扇出到多个消费者的能力类似于发布/订阅。...消费者组 当手头的任务是使用不同客户端来消费同一个Stream时,XREAD已经提供了扇出到N个客户端的方法,还使用从属服务器以提供更强的读取扩展性。...因此,基本上Kafka分区更类似于使用N个不同的Redis 键。Redis消费者组是一个从给定Stream负载均衡到N个不同消费者消息系统。
acl 需要修改,前一个 acl 是文件的 acl,后一个是目录的默认 acl。...acl 是一个可以被 acl_from_text 程序分析出各用户权限的字符串,该字符串用逗号分隔成 多个片段,每个片段的形式都如 tag:name:perm。...tag 可以是下面形式的一种:"user"(or"u") #表示这是一个用户的 ACL 条目。"group"(or"g") #表示这是一个用户组的 ACL 条目。"...other"(or"o") #表示这是其他的 ACL 条目,即没有在 ACL 指定的用户和组的 ACL 条目。"mask"(or"m") #表示这是一个掩码的 ACL 条目。...如果不指定,那么默认是给文件或目录的属主或用户组指定 ACL 权限。当然,name 也可以是用户的 UID 或者组的 GID。perm 是指该用户或组所具有的权限,它是由“rwx”组成的一个字符串。