|
|
|
@ -0,0 +1,345 @@
|
|
|
|
|
每周有营养的大厂算法面试题
|
|
|
|
|
|
|
|
|
|
第001节 2021年11月第4周流行算法题目解析
|
|
|
|
|
|
|
|
|
|
给定一棵多叉树的头节点head,每个节点只有黑白两色
|
|
|
|
|
所有黑节点都保留,所有从头节点到黑节点路径上的点都保留
|
|
|
|
|
返回处理后树的头节点
|
|
|
|
|
|
|
|
|
|
我们正在玩一个猜数游戏,游戏规则如下:
|
|
|
|
|
我从 1 到 n 之间选择一个数字。
|
|
|
|
|
你来猜我选了哪个数字。
|
|
|
|
|
如果你猜到正确的数字,就会 赢得游戏 。
|
|
|
|
|
如果你猜错了,那么我会告诉你,我选的数字比你的 更大或者更小 ,并且你需要继续猜数。
|
|
|
|
|
每当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。
|
|
|
|
|
如果你花光了钱,就会 输掉游戏 。
|
|
|
|
|
给你一个特定的数字 n ,返回能够 确保你获胜 的最小现金数,不管我选择那个数字 。
|
|
|
|
|
Leetcode链接 : https://leetcode.com/problems/guess-number-higher-or-lower-ii/
|
|
|
|
|
|
|
|
|
|
来自真实面试,同学给我的问题
|
|
|
|
|
限制:0 <= start <= end,0 <= target <= 64
|
|
|
|
|
[start,end]范围上的数字,有多少数字二进制中1的个数等于target
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第002节 2021年12月第1周流行算法题目解析
|
|
|
|
|
|
|
|
|
|
int n, int[][] roads, int x, int y
|
|
|
|
|
n表示城市数量,城市编号0~n-1
|
|
|
|
|
roads[i][j] == distance,表示城市i到城市j距离为distance(无向图)
|
|
|
|
|
求城市x到城市y的最短距离
|
|
|
|
|
|
|
|
|
|
一开始屏幕上什么也没有,粘贴板里什么也没有,
|
|
|
|
|
你只能在键盘上做如下4种操作中的1种:
|
|
|
|
|
输入:在屏幕上已经显示内容的后面加一个A
|
|
|
|
|
全选:把屏幕上已经显示的全部内容选中
|
|
|
|
|
复制:被选中的内容复制进粘贴板
|
|
|
|
|
粘贴:在屏幕上已经显示内容的后面添加粘贴板里的内容
|
|
|
|
|
给定一个正数n,表示你能操作的步数,
|
|
|
|
|
返回n步内你能让最多多少个A显示在屏幕上
|
|
|
|
|
Leetcode链接 : https://leetcode.com/problems/4-keys-keyboard/
|
|
|
|
|
|
|
|
|
|
给定一棵树的头节点head,原本是一棵正常的树
|
|
|
|
|
现在,在树上多加了一条冗余的边
|
|
|
|
|
请找到这条冗余的边并返回
|
|
|
|
|
Leetcode链接 : https://leetcode.com/problems/redundant-connection-ii/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第003节 2021年12月第2周流行算法题目解析
|
|
|
|
|
|
|
|
|
|
给你一个整数 n ,表示有 n 个专家从 0 到 n - 1 编号。
|
|
|
|
|
另外给一个下标从 0 开始的二维整数数组 meetings ,
|
|
|
|
|
其中 meetings[i] = [xi, yi, timei] 表示专家 xi 和专家 yi 在时间 timei 要开一场会。
|
|
|
|
|
一个专家可以同时参加 多场会议 。最后,给你一个整数 firstPerson 。
|
|
|
|
|
专家 0 有一个 秘密 ,最初,他在时间 0 将这个秘密分享给了专家 firstPerson 。
|
|
|
|
|
这个秘密会在每次有知晓这个秘密的专家参加会议时进行传播。更正式的表达是,每次会议,
|
|
|
|
|
如果专家 xi 在时间 timei 时知晓这个秘密,那么他将会与专家 yi 分享这个秘密,反之亦然。
|
|
|
|
|
秘密共享是 瞬时发生 的。也就是说,在同一时间,一个专家不光可以接收到秘密,还能在其他会议上与其他专家分享。
|
|
|
|
|
在所有会议都结束之后,返回所有知晓这个秘密的专家列表。你可以按 任何顺序 返回答案。
|
|
|
|
|
Leetcode链接 : https://leetcode.com/problems/find-all-people-with-secret/
|
|
|
|
|
|
|
|
|
|
来自美团
|
|
|
|
|
所有黑洞的中心点记录在holes数组里
|
|
|
|
|
比如[[3,5] [6,9]]表示,第一个黑洞在(3,5),第二个黑洞在(6,9)
|
|
|
|
|
并且所有黑洞的中心点都在左下角(0,0),右上角(x,y)的区域里
|
|
|
|
|
飞船一旦开始进入黑洞,就会被吸进黑洞里
|
|
|
|
|
返回如果统一所有黑洞的半径,最大半径是多少,
|
|
|
|
|
依然能保证飞船从(0,0)能到达(x,y)
|
|
|
|
|
|
|
|
|
|
arr数组长度为n, magic数组长度为m
|
|
|
|
|
比如 arr = { 3, 1, 4, 5, 7 },如果完全不改变arr中的值,
|
|
|
|
|
那么收益就是累加和 = 3 + 1 + 4 + 5 + 7 = 20
|
|
|
|
|
magics[i] = {a,b,c} 表示arr[a~b]中的任何一个值都能改成c
|
|
|
|
|
并且每一种操作,都可以执行任意次,其中 0 <= a <= b < n
|
|
|
|
|
那么经过若干次的魔法操作,你当然可能得到arr的更大的累加和
|
|
|
|
|
返回arr尽可能大的累加和
|
|
|
|
|
n <= 10^7 m <= 10^6 arr中的值和c的范围 <= 10^12
|
|
|
|
|
|
|
|
|
|
已知一棵二叉树上所有的值都不一样,
|
|
|
|
|
给定这棵二叉树的头节点head,
|
|
|
|
|
给定一个整型数组arr,arr里放着不同的值,每个值一定在树上
|
|
|
|
|
返回数组里所有值的最低公共祖先
|
|
|
|
|
Leetcode链接 : https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree-iv/
|
|
|
|
|
|
|
|
|
|
给定一棵多叉树的头节点head
|
|
|
|
|
每个节点的颜色只会是0、1、2、3中的一种
|
|
|
|
|
任何两个节点之间的都有路径
|
|
|
|
|
如果节点a和节点b的路径上,包含全部的颜色,这条路径算达标路径
|
|
|
|
|
(a -> ... -> b)和(b -> ... -> a)算两条路径
|
|
|
|
|
求多叉树上达标的路径一共有多少?
|
|
|
|
|
点的数量 <= 10^5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第004节 2021年12月第3周流行算法题目解析
|
|
|
|
|
|
|
|
|
|
来自TME2022校园招聘后台开发/运营开发/业务运维/应用开发笔试
|
|
|
|
|
给定一棵二叉树的头节点head,和一个正数k。从最底层开始,每一层右移k位,然后往上走过每一层,进行树的调整
|
|
|
|
|
返回调整之后树的头节点
|
|
|
|
|
具体详情请参加如下的测试页面
|
|
|
|
|
测试链接 : https://www.nowcoder.com/test/33701596/summary
|
|
|
|
|
本题目为该试卷第1题
|
|
|
|
|
|
|
|
|
|
来自TME2022校园招聘后台开发/运营开发/业务运维/应用开发笔试
|
|
|
|
|
给定一个只由'0'和'1'组成的字符串,代表一个无符号整数
|
|
|
|
|
你只能在连续的一个子串上,翻转子串,也就是子串上,0变1,1变0。返回最大的结果
|
|
|
|
|
具体详情请参加如下的测试页面
|
|
|
|
|
测试链接 : https://www.nowcoder.com/test/33701596/summary
|
|
|
|
|
本题目为该试卷第2题
|
|
|
|
|
|
|
|
|
|
来自TME2022校园招聘后台开发/运营开发/业务运维/应用开发笔试
|
|
|
|
|
给定两个参数n和k,返回m
|
|
|
|
|
含义:k进制的情况下,把1~m每一位的状态列出来,其中1状态出现的数量要>=n
|
|
|
|
|
返回最小的、能做到这一点的m值
|
|
|
|
|
具体详情请参加如下的测试页面
|
|
|
|
|
测试链接 : https://www.nowcoder.com/test/33701596/summary
|
|
|
|
|
本题目为该试卷第3题
|
|
|
|
|
|
|
|
|
|
你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个 m x n 的矩阵表示, 在这个矩阵中:
|
|
|
|
|
0 表示障碍,无法触碰
|
|
|
|
|
1 表示地面,可以行走
|
|
|
|
|
比1大的数 表示有树的单元格,也可以行走,数值表示树的高度
|
|
|
|
|
每一步,你都可以向上、下、左、右四个方向之一移动一个单位,如果你站的地方有一棵树,那么你可以决定是否要砍倒它。
|
|
|
|
|
你需要按照树的高度从低向高砍掉所有的树,每砍过一颗树,该单元格的值变为 1(即变为地面)。
|
|
|
|
|
你将从 (0, 0) 点开始工作,返回你砍完所有树需要走的最小步数。 如果你无法砍完所有的树,返回 -1 。
|
|
|
|
|
可以保证的是,没有两棵树的高度是相同的,并且你至少需要砍倒一棵树
|
|
|
|
|
Leetcode链接 : https://leetcode.com/problems/cut-off-trees-for-golf-event/
|
|
|
|
|
|
|
|
|
|
来自CMU入学申请考试
|
|
|
|
|
给定一个长度为 N 的字符串 S,由字符'a'和'b'组成,空隙由 '?' 表示
|
|
|
|
|
你的任务是用a字符或b字符替换每个间隙,
|
|
|
|
|
替换完成后想让连续出现同一种字符的最长子串尽可能短
|
|
|
|
|
例如,S = "aa??bbb",
|
|
|
|
|
如果将"??"替换为"aa" ,即"aaaabbb",则由相等字符组成的最长子串长度为4
|
|
|
|
|
如果将"??"替换为"ba" ,即"aababbb",则由相等字符组成的最长子串长度为3
|
|
|
|
|
那么方案二是更好的结果,返回3
|
|
|
|
|
S的长度 <= 10^6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第005节 2021年12月第4周流行算法题目解析
|
|
|
|
|
|
|
|
|
|
来自美团
|
|
|
|
|
给定一个无向图
|
|
|
|
|
从任何一个点x出发,比如有一条路径: x -> a -> b -> c -> y
|
|
|
|
|
这条路径上有5个点并且5个点都不一样的话,我们说(x,a,b,c,y)是一条合法路径
|
|
|
|
|
这条合法路径的代表,就是x,a,b,c,y所组成的集合,我们叫做代表集合
|
|
|
|
|
如果从b到y,还有一条路径叫(b,a,c,x,y),那么(x,a,b,c,y)和(b,a,c,x,y)是同一个代表集合
|
|
|
|
|
返回这个无向图中所有合法路径的代表集合数量
|
|
|
|
|
题目给定点的数量n <= 15,边的数量m <= 60
|
|
|
|
|
所有的点编号都是从0~n-1的
|
|
|
|
|
|
|
|
|
|
来自北京北明数科信息技术有限公司
|
|
|
|
|
class AreaResource {
|
|
|
|
|
String area; // area表示的是地区全路径,最多可能有6级,比如: 中国,四川,成都 或者 中国,浙江,杭州
|
|
|
|
|
String spliter; // 比如:逗号 -> ,
|
|
|
|
|
long count; // 表示地区的门店数量
|
|
|
|
|
}
|
|
|
|
|
现在需要把 List<AreaResource> 进行转换,需要做到同级的地域能合并
|
|
|
|
|
比如:area为中国,四川,成都 ,有10个门店;area为中国,浙江,杭州,有25个门店;area为中国,浙江,义乌,有22个门店
|
|
|
|
|
最终生成的JSON字符串为: {"中国":{"四川":{"成都":10]},"浙江":{"义乌":22,"杭州":25}}}
|
|
|
|
|
请实现下面的方法 public String mergeCount(List<AreaResource> areas)
|
|
|
|
|
|
|
|
|
|
来自hulu
|
|
|
|
|
有一个以原点为圆心,半径为1的圆
|
|
|
|
|
在这个圆的圆周上,有一些点
|
|
|
|
|
因为所有的点都在圆周上,所以每个点可以有很简练的表达
|
|
|
|
|
比如:用0来表示一个圆周上的点,这个点就在(1,0)位置
|
|
|
|
|
比如:用6000来表示一个点,这个点是(1,0)点沿着圆周逆时针转60.00度之后所在的位置
|
|
|
|
|
比如:用18034来表示一个点,这个点是(1,0)点沿着圆周逆时针转180.34度之后所在的位置
|
|
|
|
|
这样一来,所有的点都可以用[0, 36000)范围上的数字来表示
|
|
|
|
|
那么任意三个点都可以组成一个三角形,返回能组成钝角三角形的数量
|
|
|
|
|
|
|
|
|
|
整个二维平面算是一张地图,给定[x,y],表示你站在x行y列
|
|
|
|
|
你可以选择面朝的任何方向
|
|
|
|
|
给定一个正数值angle,表示你视野的角度为
|
|
|
|
|
这个角度内你可以看无穷远,这个角度外你看不到任何东西
|
|
|
|
|
给定一批点的二维坐标,
|
|
|
|
|
返回你在朝向最好的情况下,最多能看到几个点
|
|
|
|
|
|
|
|
|
|
有m个同样的苹果,认为苹果之间无差别
|
|
|
|
|
有n个同样的盘子,认为盘子之间也无差别
|
|
|
|
|
还有,比如5个苹果如果放进3个盘子,
|
|
|
|
|
那么1、3、1和1、1、3和3、1、1的放置方法,也认为是一种方法
|
|
|
|
|
如上的设定下,返回有多少种放置方法
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第006节 2021年12月第5周流行算法题目解析
|
|
|
|
|
|
|
|
|
|
有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱,
|
|
|
|
|
以及不同程度的安静值(quietness)
|
|
|
|
|
为了方便起见,我们将编号为 x 的人简称为 "person x "。
|
|
|
|
|
给你一个数组 richer ,其中 richer[i] = [ai, bi] 表示 person ai 比 person bi 更有钱
|
|
|
|
|
另给你一个整数数组 quiet ,其中 quiet[i] 是 person i 的安静值
|
|
|
|
|
richer 中所给出的数据 逻辑自洽
|
|
|
|
|
也就是说,在 person x 比 person y 更有钱的同时,不会出现 person y 比 person x 更有钱的情况
|
|
|
|
|
现在,返回一个整数数组 answer 作为答案,其中 answer[x] = y 的前提是:
|
|
|
|
|
在所有拥有的钱肯定不少于 person x 的人中,person y 是最安静的人(也就是安静值 quiet[y] 最小的人)。
|
|
|
|
|
leetcode链接 : https://leetcode.com/problems/loud-and-rich/
|
|
|
|
|
|
|
|
|
|
来自hulu
|
|
|
|
|
有n个人,m个任务,任务之间有依赖记录在int[][] depends里
|
|
|
|
|
比如: depends[i] = [a, b],表示a任务依赖b任务的完成
|
|
|
|
|
其中 0 <= a < m,0 <= b < m
|
|
|
|
|
1个人1天可以完成1个任务,每个人都会选当前能做任务里,标号最小的任务
|
|
|
|
|
一个任务所依赖的任务都完成了,该任务才能开始做
|
|
|
|
|
返回n个人做完m个任务,需要几天
|
|
|
|
|
|
|
|
|
|
来自hulu
|
|
|
|
|
你只有1*1、1*2、1*3、1*4,四种规格的砖块
|
|
|
|
|
你想铺满n行m列的区域,规则如下:
|
|
|
|
|
1)不管那种规格的砖,都只能横着摆
|
|
|
|
|
比如1*3这种规格的砖,3长度是水平方向,1长度是竖直方向
|
|
|
|
|
2)会有很多方法铺满整个区域,整块区域哪怕有一点点不一样,就算不同的方法
|
|
|
|
|
3)区域内部(不算区域整体的4条边界),不能有任何砖块的边界线(从上一直贯穿到下)
|
|
|
|
|
返回符合三条规则下,铺满n行m列的区域,有多少种不同的摆放方法
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第007节 2022年1月第1周流行算法题目解析
|
|
|
|
|
|
|
|
|
|
来自阿里
|
|
|
|
|
给定一个只由'a'和'b'组成的字符串str,
|
|
|
|
|
str中"ab"和"ba"子串都可以消除,
|
|
|
|
|
消除之后剩下字符会重新靠在一起,继续出现可以消除的子串...
|
|
|
|
|
你的任务是决定一种消除的顺序,最后让str消除到尽可能的短
|
|
|
|
|
返回尽可能的短的剩余字符串
|
|
|
|
|
|
|
|
|
|
在一张 无向 图上,节点编号0~N-1。老鼠开始在1节点,猫在2节点,0号节点是洞,老鼠想进洞
|
|
|
|
|
老鼠第先出发,猫后出发,轮流行动。
|
|
|
|
|
在每个玩家的行动中,他们 必须 沿着图中与所在当前位置连通的一条边移动
|
|
|
|
|
此外猫无法移动到洞中(节点 0)。
|
|
|
|
|
然后,游戏在出现以下三种情形之一时结束:
|
|
|
|
|
如果猫和老鼠出现在同一个节点,猫获胜。
|
|
|
|
|
如果老鼠到达洞中,老鼠获胜。
|
|
|
|
|
如果某一位置重复出现(即,玩家的位置和移动顺序都与上一次行动相同),游戏平局。
|
|
|
|
|
给你一张图 graph ,并假设两位玩家都都以最佳状态参与游戏,返回谁获胜
|
|
|
|
|
leetcode链接 : https://leetcode.com/problems/cat-and-mouse/
|
|
|
|
|
|
|
|
|
|
给你两个长度分别 n 和 m 的整数数组 nums 和 multipliers ,其中 n >= m ,
|
|
|
|
|
数组下标 从 1 开始 计数。
|
|
|
|
|
初始时,你的分数为 0 。
|
|
|
|
|
你需要执行恰好 m 步操作。在第 i 步操作(从 1 开始 计数)中,需要:
|
|
|
|
|
选择数组 nums 开头处或者末尾处 的整数 x 。
|
|
|
|
|
你获得 multipliers[i] * x 分,并累加到你的分数中。
|
|
|
|
|
将 x 从数组 nums 中移除。
|
|
|
|
|
在执行 m 步操作后,返回 最大 分数。
|
|
|
|
|
leetcode链接 : https://leetcode.com/problems/maximum-score-from-performing-multiplication-operations/
|
|
|
|
|
|
|
|
|
|
来自学员问题
|
|
|
|
|
给定一个二维数组,其中全是非负数
|
|
|
|
|
每一步都可以往上、下、左、右四个方向运动
|
|
|
|
|
返回从左下角走到右下角的最短距离
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第008节 2022年1月第2周流行算法题目解析
|
|
|
|
|
|
|
|
|
|
给定一个非常大的List<String> list
|
|
|
|
|
每一个字符串类似 : "hello,world,have,hello,world"
|
|
|
|
|
这一个字符串中,有2个hello,2个world,1个have
|
|
|
|
|
请设计一种多线程处理方案,统计list中每一个字符串,切分出来的单词数量,并且汇总
|
|
|
|
|
最终返回一个HashMap<String, Integer>表示每个字符串在list中一共出现几次
|
|
|
|
|
多线程设计 + 算法
|
|
|
|
|
本题没有代码实现,会在课上讲述思路
|
|
|
|
|
|
|
|
|
|
给定一个正数数组arr,其中每个值代表砖块长度
|
|
|
|
|
所有砖块等高等宽,只有长度有区别
|
|
|
|
|
每一层可以用1块或者2块砖来摆
|
|
|
|
|
要求每一层的长度一样
|
|
|
|
|
要求必须使用所有的砖块
|
|
|
|
|
请问最多摆几层
|
|
|
|
|
|
|
|
|
|
来自兴业数金
|
|
|
|
|
给定一个字符串形式的数,比如"3421"或者"-8731"
|
|
|
|
|
如果这个数不在-32768~32767范围上,那么返回"NODATA"
|
|
|
|
|
如果这个数在-32768~32767范围上,那么这个数就没有超过16个二进制位所能表达的范围
|
|
|
|
|
返回这个数的2进制形式的字符串和16进制形式的字符串,用逗号分割
|
|
|
|
|
|
|
|
|
|
给你一个下标从 0 开始包含 n 个正整数的数组 arr ,和一个正整数 k 。
|
|
|
|
|
如果对于每个满足 k <= i <= n-1 的下标 i ,都有 arr[i-k] <= arr[i] ,那么我们称 arr 是 K 递增 的。
|
|
|
|
|
比方说,arr = [4, 1, 5, 2, 6, 2] 对于 k = 2 是 K 递增的,因为:
|
|
|
|
|
arr[0] <= arr[2] (4 <= 5)
|
|
|
|
|
arr[1] <= arr[3] (1 <= 2)
|
|
|
|
|
arr[2] <= arr[4] (5 <= 6)
|
|
|
|
|
arr[3] <= arr[5] (2 <= 2)
|
|
|
|
|
但是,相同的数组 arr 对于 k = 1 不是 K 递增的(因为 arr[0] > arr[1]),
|
|
|
|
|
对于 k = 3 也不是 K 递增的(因为 arr[0] > arr[3] )。
|
|
|
|
|
每一次 操作 中,你可以选择一个下标 i 并将 arr[i] 改成任意 正整数。
|
|
|
|
|
请你返回对于给定的 k ,使数组变成 K 递增的 最少操作次数 。
|
|
|
|
|
leetcode链接 : https://leetcode.com/problems/minimum-operations-to-make-the-array-k-increasing/
|
|
|
|
|
|
|
|
|
|
来自美团
|
|
|
|
|
小美有一个长度为n的数组,
|
|
|
|
|
为了使得这个数组的和尽量大,她向会魔法的小团进行求助
|
|
|
|
|
小团可以选择数组中至多两个不相交的子数组,
|
|
|
|
|
并将区间里的数全都变为原来的10倍
|
|
|
|
|
小团想知道他的魔法最多可以帮助小美将数组的和变大到多少?
|
|
|
|
|
|
|
|
|
|
给定一个非负数组arr,学生依次坐在0~N-1位置,每个值表示学生的安静值
|
|
|
|
|
如果在i位置安置插班生,那么i位置的安静值变成0,同时任何同学都会被影响到而减少安静值
|
|
|
|
|
同学安静值减少的量: N - 这个同学到插班生的距离
|
|
|
|
|
但是减到0以下的话,当做0处理
|
|
|
|
|
返回一个和arr等长的ans数组,ans[i]表示如果把插班生安排在i位置,所有学生的安静值的和
|
|
|
|
|
比如 : arr = {3,4,2,1,5},应该返回{4,3,2,3,4}
|
|
|
|
|
比如 : arr = {10,1,10,10,10},应该返回{24,27,20,20,22}
|
|
|
|
|
arr长度 <= 10^5
|
|
|
|
|
arr中值 <= 2 * 10^5
|
|
|
|
|
注意:本题在直播课上讲错了,已经发了重新录制的视频,请一定要看更正后的视频
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第009节 2022年1月第3周流行算法题目解析
|
|
|
|
|
|
|
|
|
|
A*算法
|
|
|
|
|
过程和Dijskra高度相处
|
|
|
|
|
有到终点的预估函数
|
|
|
|
|
只要预估值<=客观上最优距离,就是对的
|
|
|
|
|
预估函数是一种吸引力:
|
|
|
|
|
1)合适的吸引力可以提升算法的速度
|
|
|
|
|
2)吸引力“过强”会出现错误
|
|
|
|
|
|
|
|
|
|
在一个10^6 * 10^6的网格中,
|
|
|
|
|
source = [sx, sy]是出发位置,target = [tx, ty]是目标位置
|
|
|
|
|
数组blocked是封锁的方格列表,被禁止的方格数量不超过200
|
|
|
|
|
blocked[i] = [xi, yi] 表示(xi, yi)的方格是禁止通行的
|
|
|
|
|
每次移动都可以走上、下、左、右四个方向
|
|
|
|
|
但是来到的位置不能在封锁列表blocked上
|
|
|
|
|
同时不允许走出网格
|
|
|
|
|
如果从source能到达target返回 true。否则返回false。
|
|
|
|
|
|
|
|
|
|
来自字节跳动
|
|
|
|
|
给定一个数组arr,其中的值有可能正、负、0
|
|
|
|
|
给定一个正数k
|
|
|
|
|
返回累加和>=k的所有子数组中,最短的子数组长度
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第010节 2022年1月第4周流行算法题目解析
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|