2022-07-17:1、2、3...n-1、n、n、n+1、n+2...在这个序列中,只有一个数字有重复(n)。这个序列是无序的,找到重复数字n。这个序列是有序的,找到重复数字n。答案2022-07-17:不能用哈希表。第一问,两种方法,快慢指针找环问题和异或法。第二问,二分法。代码用rust编写。代码如下:use rand::Rng;use std::collections::HashSet;fn main() { let nn: i32 = 10; let test_time: i32 =
2022-08-02:小红拿到了一个大立方体,该大立方体由1*1*1的小方块拼成,初始每个小方块都是白色。
2022-08-02:小红拿到了一个大立方体,该大立方体由111的小方块拼成,初始每个小方块都是白色。
为了解决此问题,我们可以使用搜索和动态规划技术进行优化,下面将详细介绍两种算法的实现方法。
2022-12-20:二狗买了一些小兵玩具,和大胖一起玩, 一共有n个小兵,这n个小兵拍成一列, 第i个小兵战斗力为hi,然后他们两个开始对小兵进行排列, 一共进行m次操作,二狗每次操作选择一个数k,将前k个小兵战斗力从小到大排列, 大胖每次操作选择一个数k,将前k个小兵战斗力从大到小排列, 问所有操作结束后,排列顺序什么样, 给定一个长度为n的数组arr,表示每个小兵的战斗力, 给定一个长度为m的数组op, op[i] = { k , 0 }, 表示对前k个士兵执行从小到大的操作, op[i] = {
2022-12-20:二狗买了一些小兵玩具,和大胖一起玩,一共有n个小兵,这n个小兵拍成一列,第i个小兵战斗力为hi,然后他们两个开始对小兵进行排列,一共进行m次操作,二狗每次操作选择一个数k,将前k个小兵战斗力从小到大排列,大胖每次操作选择一个数k,将前k个小兵战斗力从大到小排列,问所有操作结束后,排列顺序什么样,给定一个长度为n的数组arr,表示每个小兵的战斗力,给定一个长度为m的数组op, opi = { k , 0 }, 表示对前k个士兵执行从小到大的操作,opi = { k , 1 }, 表示对前
Bi = { e, f }表示,第i条查询想知道e号、f号实验,一共有多少人(去重统计)。
let n: i32 = rand::thread_rng().gen_range(0, len) + 1;
B[i] = { e, f }表示,第i条查询想知道e号、f号实验,一共有多少人(去重统计)。
如翻转(1,2,3,4,5,6)的第三个到第五个元素組成的子数组得到的是(1,2,5,4,3,6),
比如数组arr = { 3, -2, 3, 3, 5, 6, 3, -2 }, k = 3
2022-05-27:现在有N条鱼,每条鱼的体积为Ai,从左到右排列,数组arr给出。
L0=最左0和最右0的长度,L1=最左1和最右1的长度,求L0和L1的最大值即可。
第四行有4个整数La,Ra,Lb,Rb,范围在0到10^18之间,代表题目描述中的参数。
2022-07-09:总长度为n的数组中,所有长度为k的子序列里,有多少子序列的和为偶数?
[左神java代码](https://github.com/algorithmzuo/weekly-problems/blob/main/src/class_2022_08_2_week/Code02_TreeDye.java)
2022-11-04:给定一个正数n,表示有多少个节点 给定一个二维数组edges,表示所有无向边 edgesi = {a, b} 表示a到b有一条无向边 edges一定表示的是一个无环无向图,也就是树结构 每个节点可以染1、2、3三种颜色。 要求 : 非叶节点的相邻点一定要至少有两种和自己不同颜色的点。 返回一种达标的染色方案,也就是一个数组,表示每个节点的染色状况。 1 <= 节点数量 <= 10的5次方。 来自米哈游。 答案2022-11-04: 生成图,选一个头节点,深度优先染色。 代码用rust编
2022-11-09:给定怪兽的血量为hp第i回合如果用刀砍,怪兽在这回合会直接掉血,没有后续效果第i回合如果用毒,怪兽在这回合不会掉血,但是之后每回合都会掉血,并且所有中毒的后续效果会叠加给定的两个数组cuts、poisons,两个数组等长,长度都是n表示你在n回合内的行动,每一回合的刀砍的效果由cutsi表示每一回合的中毒的效果由poisonsi表示如果你在n个回合内没有直接杀死怪兽,意味着你已经无法有新的行动了但是怪兽如果有中毒效果的话,那么怪兽依然会在hp耗尽的那回合死掉。返回你最快能在多少回合内将
2022-06-08:找到非负数组中拥有"最大或的结果"的最短子数组,返回最短长度。
[左神java代码](https://github.com/algorithmzuo/weekly-problems/blob/main/src/class_2022_08_2_week/Code01_ParenthesesDye.java)
2023-03-11:给定一个N*M的二维矩阵,只由字符'O'、'X'、'S'、'E'组成,
2022-11-03:给定一个数组arr,和一个正数k如果arri == 0,表示i这里既可以是左括号也可以是右括号,而且可以涂上1~k每一种颜色如果arri != 0,表示i这里已经确定是左括号,颜色就是arri的值那么arr整体就可以变成某个括号字符串,并且每个括号字符都带有颜色。返回在括号字符串合法的前提下,有多少种不同的染色方案。不管是排列、还是颜色,括号字符串任何一点不一样,就算不同的染色方案最后的结果%10001,为了方便,我们不处理mod,就管核心思路。2 <= arr长度 <= 50001
那么RMQ方法比线段树方法好实现,时间复杂度O(NlogN),额外空间复杂度O(NlogN)。
2023-02-20:小A认为如果在数组中有一个数出现了至少k次, 且这个数是该数组的众数,即出现次数最多的数之一, 那么这个数组被该数所支配, 显然当k比较大的时候,有些数组不被任何数所支配。 现在小A拥有一个长度为n的数组,她想知道内部有多少个区间是被某个数支配的。 2 <= k <= n <= 100000, 1 <= 数组的值 <= n。 来自小红书。 答案2023-02-20: 窗口问题。 求总数,求不被支配的数量。 时间复杂度:O(N)。 空间复杂度:O(N)。 代码用rust编写。代码如下:
2022-05-21:给定一个数组arr,长度为n, 表示n个服务员,每个人服务一个人的时间。 给定一个正数m,表示有m个人等位。 如果你是刚来的人,请问你需要等多久? 假设:m远远大于n,比如n<=1000, m <= 10的9次方,该怎么做? 来自谷歌。 答案2022-05-21: 方法一:小根堆。时间复杂度:O(m*logN)。 方法二:二分法。时间复杂度:O(N*logm)。 代码用rust编写。代码如下: use rand::Rng; fn main() { let len: i32 =
[左神java代码](https://github.com/algorithmzuo/weekly-problems/blob/main/src/class_2022_08_3_week/Code02_CutOrPoison.java)
2022-09-25:给定一个二维数组matrix,数组中的每个元素代表一棵树的高度。
2023-01-06:给定一个只由小写字母组成的字符串str,长度为N,给定一个只由0、1组成的数组arr,长度为N,arri等于 0 表示str中i位置的字符不许修改,arri 等于 1表示str中i位置的字符允许修改,给定一个正数m,表示在任意允许修改的位置,可以把该位置的字符变成a~z中的任何一个,可以修改m次。返回在最多修改m次的情况下,全是一种字符的最长子串是多长。1 <= N, M <= 10^5,所有字符都是小写。来自字节。答案2023-01-06:尝试全变成a一直到全变成z,遍历26次。每次
2022-12-12:有n个城市,城市从0到n-1进行编号。小美最初住在k号城市中
2023-01-06:给定一个只由小写字母组成的字符串str,长度为N, 给定一个只由0、1组成的数组arr,长度为N, arr[i]等于 0 表示str中i位置的字符不许修改, arr[i] 等于 1表示str中i位置的字符允许修改, 给定一个正数m,表示在任意允许修改的位置, 可以把该位置的字符变成a~z中的任何一个, 可以修改m次。 返回在最多修改m次的情况下,全是一种字符的最长子串是多长。 1 <= N, M <= 10^5, 所有字符都是小写。 来自字节。 答案2023-01-06: 尝试全变成
2022-10-19:一个数组如果满足 : 升降升降升降... 或者 降升降升...都是满足的 给定一个数组, 1,看有几种方法能够剔除一个元素,达成上述的要求 2,数组天然符合要求返回0 3,剔除1个元素达成不了要求,返回-1, 比如: 给定3, 4, 5, 3, 7,返回3 移除0元素,4 5 3 7 符合 移除1元素,3 5 3 7 符合 移除2元素,3 4 3 7 符合 再比如:给定1, 2, 3, 4 返回-1 因为达成不了要求。 答案2022-10-19: 遍历两次。 时间复杂度:O(N)。
2022-06-23:给定一个非负数组,任意选择数字,使累加和最大且为7的倍数,返回最大累加和。
[左神java代码](https://github.com/algorithmzuo/weekly-problems/blob/main/src/class_2022_04_3_week/Code01_MaxOneNumbers.java)
点的数量 <= 10^5,边的数量 <= 2 * 10^5,1 <= 边的权值 <= 10^6。
2022-07-21:给定一个字符串str,和一个正数k,你可以随意的划分str成多个子串,目的是找到在某一种划分方案中,有尽可能多的回文子串,长度>=k,并且没有重合。返回有几个回文子串。来自optiver。答案2022-07-21:马拉车算法+贪心。代码用rust编写。代码如下:use rand::Rng;fn main() { let n: i32 = 20; let r = 3; let test_time: i32 = 50000; println!("测试开始");
N <= 10^5, wi <= 10^5, vi <= 10^5, bag <= 10^5。
2022-07-03:数组里有0和1,一定要翻转一个区间,翻转:0变1,1变0。请问翻转后可以使得1的个数最多是多少?来自小红书。3.13笔试。答案2022-07-03:某个区间,0个数-1个数=最大值。0变成1,1变成-1,求子数组的最大累加和。代码用rust编写。代码如下:use rand::Rng;fn main() { let nn: i32 = 100; let test_time: i32 = 20000; println!("测试开始"); for i in 0..te
2022-08-22:给定一个数组arr,长度为n,最多可以删除一个连续子数组,求剩下的数组,严格连续递增的子数组最大长度。n <= 10^6。来自字节。5.6笔试。答案2022-08-22:动态规划+线段树。代码用rust编写。代码如下:use rand::Rng;fn main() { let n: i32 = 100; let v: i32 = 20; let test_time: i32 = 50000; println!("测试开始"); for _ in 0..te
2022-11-01:给定一个只由小写字母和数字字符组成的字符串str。 要求子串必须只含有一个小写字母,数字字符数量随意。 求这样的子串最大长度是多少? 答案2022-11-01: 经典的滑动窗口问题。 时间复杂度:O(N)。 空间复杂度:O(1)。 代码用rust编写。代码如下: use rand::Rng; fn main() { let nn: i32 = 100; let test_time: i32 = 10000; println!("测试开始"); for _
操作2 : 如果手上的鸡蛋数量是3的整数倍,大妈可以直接把三分之二的鸡蛋放回仓库,手里留下三分之一。
[左神java代码](https://github.com/algorithmzuo/weekly-problems/blob/main/src/class_2022_04_1_week/Code03_ArrangeMeetingPosCancelPre.java#L188)
领取专属 10元无门槛券
手把手带您无忧上云