首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

字节跳动 算法全四面 详细面经

二面也是问了一道算法题,是寻找迷宫中的最短路径,迷宫中1表示有墙,路不通,0表示可以走。我脑子不知道怎么抽了,直接想用DFS来解,给面试官讲了一下思路。...当然,O(mn)复杂度的算法非常好想,我也是第一时间讲了这个思路。面试官提醒我能不能再优化,我优化到了O(nlog(m)),就不知道怎么再优化了,面试官说可以了。...最后查了一下,这道题我做过,不过做的时候也是直接用的O(mn)的算法,O(n)对我来说,还是不太好想到的。 概率题:考虑五局三胜和三局两胜的情况,哪种更公平之类的。...回答这个问题,主要其实就是考虑复杂度和分布式的知识,以及如何在query中查找专有名词(本身比较简单,考虑复杂度就不简单了)。不过我对分布式了解的不多,就只是自己手动分布式了一下。...实际问题:在用户搜索场景中,如何在用户搜索的时候根据用户输入的字推荐要搜索的query,以及如何把错别字也正确推荐。主要是考虑输入与候选集合的匹配,用户画像的构建,考虑用户的历史搜索信息。

2.8K31

最短路径算法汇总「建议收藏」

如果时间复杂度要求不高,使用该算法求解两点间的最短路径或指定点到其余点的最短路径是可行的选择。...开始时,已知最短路径的顶点集合P中只有源点一个顶点。使用数组book记录哪些顶点在集合P中。对于某个顶点i,如果book[i]为1则表示这个顶点在集合P中,否则则在集合Q中。...如果这个值比目前已知的dis[v]要小,可以用新值来替代当前dis[v]中的值。4、重复步骤3直到集合Q为空,算法结束。最终dis数组中的值就是源点到所有顶点的最短路径。...下面的代码中,外循环一共循环n-1次,内循环循环了m次。dis数组用来记录源点到其余各个顶点的最短路径。u、v、w三个数组是用来记录边的信息。...N3) O((M+N)logN) O(MN) 最坏O(MN) 试用情况 稠密图和顶点关系密切 稠密图和顶点关系密切 稀疏图和边关系密切 稀疏图和边关系密切 负权 可以解决 不能解决 可以解决 可以解决

98220
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用javascript分类刷leetcode6.深度优先&广度优先(图文视频讲解)_2023-03-15

    深度优先&广度优先 图片 图片 动画过大,点击查看 bfs:适用于层序遍历或者寻找最短路径的问。...图片 方法1.dfs 思路:深度优先,先循环网格, 当grid[x][y] === 1时,将当前单元格置为0并上下左右不断递归,计算每个岛屿的大小,然后不断更新最大岛屿 复杂度:时间复杂度O(mn),m...空间复杂度O(mn),递归最大深度 js: var maxAreaOfIsland = function(grid) { let row = grid.length, col = grid[0]...空间复杂度O(mn),queue的大小 js: var maxAreaOfIsland = function(grid) { let ans = 0, row = grid.length, col...空间复杂度O(mn),递归最大深度 js: const floodFill = (image, sr, sc, newColor) => { const m = image.length;

    34720

    哥本哈根大学研究人员解决「单源最短路径」问题

    「在一个带权有向图G=(V,E)中,每条边的权是一个实数。另外,还给定V中的一个顶点,称为源。 计算从源到其他所有各顶点的最短路径长度,这就是单源最短路径(SSSP)问题。」...Dijkstra算法运算时间最短,能达到近线性时间 O(m + n log n) ,但不能计算负权值边。 Bellman-Ford算法可以计算负权值边,但运算时间过长,达到O(mn)。...首先,Wulff-Nilsen假设存在一种算法 Dijkstra(G,s),输入无负权边的图形G,顶点s ∈ V,G中的s输出最短路径树。运行时间为O(m + n log n)。...单源最短路径问题的目的是找到从给定起始节点到网络中所有其他节点的最短路径。 网络表示为由节点和它们之间的连接组成的图形,称为边。...60年后,寻求答案不仅为了解谜 去年,Wulff-Nilsen在同一领域取得了另一项突破,结果涉及如何在随时间变化的网络中找到最短路径。他对最近谜语的解决方案建立在这项工作的基础上。

    98020

    关于差分约束(转载)

    最后,我们在这张图上求一次单源最短路径,这些三角形不等式就会全部都满足了,因为它是最短路径问题的基本性质嘛。 话说回来,所谓单源最短路径,当然要有一个源点,然后再求这个源点到其他所有点的最短路径。...每一条边都代表差分约束系统中的一个不等式。现在以V0为源点,求单源最短路径。最终得到的V0到Vn的最短路径长度就是Xn的一个解啦。从图1中可以看到,这组解是{-5, -3, 0, -1, -4}。...但是X0的值是无可争议的,既然是以它作为源点求的最短路径,那么源点到它的最短路径长度当然是0了。...> > 假设X0是定死的;X1到Xn在满足所有约束的情况下可以取到的最大值分别为M1、M2、……、Mn(当然我们不知道它们的值是多少);解出的源点到每个点的最短路径长度为D1、D2、……、Dn。...最长路径中的三角不等式与最短路径中相反: $$ d(v) >= d(u) + w(u, v) $$ 也就是 $$ d(v) - d(u) >= w(u, v) $$ 所以建图的时候要先把所有不等式化成大于等于号的

    50220

    LeetCode 1266. 访问所有点的最小时间

    示例 1: [20210226100804] 输入:points = [[1,1],[3,4],[-1,0]] 输出:7 解释:一条最佳的访问路径是: [1,1] -> [2,2] -> [3,3] -...3 秒 从 [3,4] 到 [-1,0] 需要 4 秒 一共需要 7 秒 示例 2: 输入:points = [[3,2],[-2,2]] 输出:5 解题思路 按照题目的描述,2 个点之间如何能时间最短呢...分析一下, 如果 x=2,y=2,那么斜着走两次即可; 如果 x=2,y=3,那么斜着走两次,再沿着 y 轴方向走一次; 如果 x=3,y=2,那么斜着走两次,再沿着 x 轴方向走一次 也就是说,两个点之间最短距离是...ans += Math.min(x, y) + Math.abs(x - y); } return ans; } } 复杂度分析 时间复杂度:O(...mn),points 是 mn 的 空间复杂度:O(1) GitHub LeetCode 项目 项目 GitHub LeetCode 全解,欢迎大家 star、fork、merge,共同打造最全 LeetCode

    29030

    最短路算法实现与分析:Dijkstra算法,Floyed,Bellman-Ford, SPFA算法;

    最短路算法:最短路径算法是图论研究中,一个经典算法问题;旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 确定起点的最短路径问题:已知起始点,求最短路径问题。...另外,还给定V中的一个顶点,称为源;要计算从源到其他所有顶点的最短路径长度。这个长度是指路上各边权之和。...Floyed算法:Floyed算法,又称为插点法,一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法;该算法可以求出多源最短路,可以处理负权边情况,但是不能出现负环;该算法思想使用动态规划思想...;所以使用队列,每次将距离更新且不在队列中的点入队;每次从队列中取出一个顶点,对它所有相邻的节点进行松弛,如果某个顶点松弛成功,如归该点不在队列中,则将其入队,重复这样的操作,直到队列为空为止;如果一个节点入队次数超过...; Bellman-Ford算法:求单源最短路,可以处理负权边;时间复杂度为O(NM); SPFA算法:求单源最短路,Bellman-ford算法优化版本,可以处理负权边;时间复杂度为O(kM)~O(NM

    1.5K20

    文心一言 VS chatgpt (1)-- 算法导论1.1

    时间复杂度:最短路径问题的时间复杂度为O(V+E),其中V表示节点数,E表示边数;旅行商问题的时间复杂度为O(V2+E2),其中V表示节点数,E表示边数。...相似之处: 都是图论中的经典问题。最短路径问题和旅行商问题都是在无向或有向图中寻找最优路径的经典问题。 都可以使用动态规划、贪心算法等方法进行求解。...不同之处: 问题目标不同:最短路径问题的目标是在图中寻找从一个顶点到另一个顶点的最短路径,而旅行商问题则是要求寻找访问所有城市一次并回到起点的最短路径。...处理方式不同:最短路径问题通常可以使用单源最短路径算法或全源最短路径算法进行求解。而旅行商问题则没有类似的高效算法,只能使用蛮力搜索或一些近似算法进行求解,如模拟退火算法、遗传算法等。...时间复杂度不同:最短路径问题的时间复杂度通常为 O(E+VlogV),其中 E 表示边数,V 表示顶点数。而旅行商问题如果使用蛮力搜索,则时间复杂度为 O(n!)

    36020

    【算法学习】最短路径问题

    在无向图(即点之间的路径没有方向的区别)中该问题与确定起点的问题完全等同,在有向图(路径间有确定的方向)中该问题等同于把所有路径方向反转的确定起点的问题。...其中,将到自己的距离定义为0,用无穷定义没有路径连通。存储到数组中,可以通过二维数组表示。 下面我们就开始分别讲解几种解决最短路径问题的经典算法。...因为当我们寻找i、j之间的最短路径时,要么是i、j间的距离,要么就是经过其他点中转:i→k→。。。→j。...04 Dijkstra算法 Dijkstra 算法主要解决的是单源最短路径问题。它的时间复杂度一般是o(n^2) ,因此相对于Floyd算法速度上有极大的优势,可以处理更多的数据。...(N³) O((m+n)logN) O(MN) 最坏也是O(NM) 适用情况 稠密图和顶点关系密切 稠密图和顶点关系密切 稀疏图和边关系密切 稀疏图和边关系密切 负权 可以 不能 可以 可以 有负权边时

    3.9K10

    数学建模--图论与最短路径

    图论与最短路径问题 最短路径问题定义 最短路径问题是指在给定的带权有向或无向图中,寻找两个顶点之间的路径,使得这条路径上的边权重之和最小。该问题广泛应用于交通规划、物流配送、网络通信等领域。...延伸 如何在实际应用中优化Dijkstra算法以提高效率?...这可以显著减少每次迭代时寻找最短路径节点的时间复杂度,从而提高整体效率。 具体来说,可以使用二叉堆或斐波那契堆等高效的数据结构来实现优先队列,这样可以在每次迭代中快速找到当前距离源点最近的节点。...这种方法在某些编程环境中(如Matlab)尤其有效。 代码优化: 对于具体的实现,可以通过代码优化来提高效率。...图染色算法在通信网络中也有重要应用,例如通过图染色可以实现多路径传输以避免冲突和拥塞。此外,还有许多其他高级算法如最大流算法、最小费用流算法等被用于不同场景下的网络优化。

    12910

    最小路径和

    对于不在第一行和第一列的元素,可以从其上方相邻元素向下移动一步到达,或者从其左方相邻元素向右移动一步到达,元素对应的最小路径和等于其上方相邻元素与其左方相邻元素两者对应的最小路径和中的最小值加上当前元素的值...对于 dp 中的其余元素,通过以下状态转移方程计算元素值。 当 i > 0 且 j = 0 时,dp[i][0] = dp[i − 1][0] + grid[i][0]。...Math.min(dp[i - 1][j], dp[i][j - 1]); } } return dp[row - 1][col - 1]; } 复杂度分析 时间复杂度:Ο(mn...空间复杂度:O(mn),其中 m 和 n 分别是网格的行数和列数。创建一个二维数组 dp,和网格大小相同。空间复杂度可以优化,例如每次只存储上一行的 dp 值,则可以将空间复杂度优化到 O(n)。...我们从 [0, 0] 坐标出发,最短路径是 f[0][0] + min(f[0][1], f[1][0]) ,针对 f[0][1] 和 f[1][0] 继续进行递归处理。

    41420

    2.5 8086-8088CPU引脚

    我将帮助你在最短时间内掌握微机原理的核心内容,为你的考研或期末考试保驾护航。 为什么选择我的视频? 全程考点讲解:每一节视频都紧扣考试要点,拒绝冗余,专注于最关键的知识点。...\texttt{MN}/\overline{\texttt{MX}}=0 时:工作方式设置为最大模式,会外接其他CPU或扩展设备。...\overline{\texttt{DEN}} :数据允许信号 这是一个输出信号,低电平有效,提供给数据总线收发器(如 8286),表示 CPU 准备发送或接收数据。...访问 I/O 端口时:不使用这 4 条引线。 READY:“准备好”信号 由所寻址的存储器或 I/O 端口发来的响应信号,表明存储器或 I/O 端口的状态。...偶存储体与数据总线 D7~D0 相连,该存储体中每个地址均为偶数地址。 奇存储体与数据总线 D15~D8 相连,该存储体中每个地址均为奇数地址。

    10010

    用javascript分类刷leetcode并查集(图文视频讲解)

    并查集(union & find):用于处理一些元素的合并和查询问题Find:确定元素属于哪一个子集,他可以被用来确定两个元素是否属于同一个子集,加入路径压缩,复杂度近乎O(1)Union:将两个子集合并成同一个集合图片...空间复杂度是O(min(m,n)),队列的长度最坏的情况下需要能容得下m和n中的较小者js:const numIslands = (grid) => { let count = 0 let...mn),时间复杂度其实是O(mn * f(mn)),f是采用并查集路径压缩时的复杂度,为常数,所以可以忽略。...复杂度:时间复杂度O(n^2),n是城市的数量,遍历矩阵中的每个元素。...,队列不为空就不断出队,继续遍历复杂度:时间复杂度O(n^2),n是城市的数量,遍历矩阵中的每个元素。

    57730

    用javascript分类刷leetcode23.并查集(图文视频讲解)

    并查集(union & find):用于处理一些元素的合并和查询问题Find:确定元素属于哪一个子集,他可以被用来确定两个元素是否属于同一个子集,加入路径压缩,复杂度近乎O(1)Union:将两个子集合并成同一个集合图片...空间复杂度是O(min(m,n)),队列的长度最坏的情况下需要能容得下m和n中的较小者js:const numIslands = (grid) => { let count = 0 let...mn),时间复杂度其实是O(mn * f(mn)),f是采用并查集路径压缩时的复杂度,为常数,所以可以忽略。...复杂度:时间复杂度O(n^2),n是城市的数量,遍历矩阵中的每个元素。...,队列不为空就不断出队,继续遍历复杂度:时间复杂度O(n^2),n是城市的数量,遍历矩阵中的每个元素。

    68950

    用javascript分类刷leetcode22.字典树(图文视频讲解)

    图片思路:将words数组中的所有字符串加入Trie中,然后遍历网格,判断网格路径形成的字符串在不在Trie中,然后上下左右四个方向不断回溯尝试。...复杂度分析:时间复杂度O(MN⋅3^L),空间复杂度是O(max(MN, KL)),visited空间是O(MN),字典树O(KL),L是最长字符串的长度,K是words数组的长度。...dfs递归栈的最大深度是O(min(L,MN)),方法1.TrieJs:var findWords = function (board, words) { const trie = new Trie...方法1:sort+hash思路:排序数组,然后遍历字符串数组,判断数组中的每个字符串的子串是否都在数组中复杂度:时间复杂度O(mn),m是字符串数组的长度,n是字符串最大长度。...递归寻找那个长度最大的单词复杂度:时间复杂度O(mn),m是字符串数组的长度,n是字符串最大长度。

    57220

    数据结构 第15讲 一场说走就走的旅行——最短路径

    集合V−S中所包含的顶点到源点的最短路径的长度待定,称从源点出发只经过S中的点到达V−S中的点的路径为特殊路径,并用数组dist[]记录当前每个顶点所对应的最短特殊路径长度。...图2-17 最短距离数组dist[] 图2-18 前驱数组p[] (6)找最小 在集合V−S={3,4,5}中,依照贪心策略来寻找dist[]具有最小值的顶点t,依照贪心策略来寻找V−S集合中dist...图2-21 最短距离数组dist[] 图2-22 前驱数组p[] (9)找最小 在集合V−S={4,5}中,依照贪心策略来寻找V−S集合中dist[]最小的顶点t,如图2-23所示。...flag[u]=true; //初始化集合S中,只有一个元素:源点 u dist[u] = 0; //初始化源点 u的最短路径为0,自己到自己的最短路径 (4)找最小 在集合V−S中寻找距离源点...2.算法优化拓展 在for语句③中,即在集合V−S中寻找距离源点u最近的顶点t,其时间复杂度为O(n),如果我们使用优先队列,则可以把时间复杂度降为O(log n)。那么如何使用优先队列呢?

    1.8K10

    搞定大厂算法面试之leetcode精讲22.字典树

    单词搜索 II (hard) 思路:将words数组中的所有字符串加入Trie中,然后遍历网格,判断网格路径形成的字符串在不在Trie中,然后上下左右四个方向不断回溯尝试。...复杂度分析:时间复杂度O(MN⋅3^L),空间复杂度是O(max(MN, KL)),visited空间是O(MN),字典树O(KL),L是最长字符串的长度,K是words数组的长度。...dfs递归栈的最大深度是O(min(L,MN)), 方法1.Trie Js: var findWords = function (board, words) { const trie = new...词典中最长的单词 (easy) 方法1:sort+hash 思路:排序数组,然后遍历字符串数组,判断数组中的每个字符串的子串是否都在数组中 复杂度:时间复杂度O(mn),m是字符串数组的长度,n是字符串最大长度...递归寻找那个长度最大的单词 复杂度:时间复杂度O(mn),m是字符串数组的长度,n是字符串最大长度。

    45540

    最全的JavaScript 算法与数据结构

    A 贝尔曼-福特算法 - 找到图中所有顶点的最短路径 A 弗洛伊德算法 - 找到所有顶点对 之间的最短路径 A 判圈算法 - 对于有向图和无向图 (基于DFS和不相交集的版本) A 普林演算法 - 寻找加权无向图的最小生成树..., 不考虑以后情况 B 跳跃游戏 A 背包问题 A 戴克斯特拉算法 - 找到所有图顶点的最短路径 A 普里姆算法 - 寻找加权无向图的最小生成树 (MST) A 克鲁斯卡尔算法 - 寻找加权无向图的最小生成树...A 最大子数列 A 弗洛伊德算法 - 找到所有顶点对之间的最短路径 A 贝尔曼-福特算法 - 找到所有图顶点的最短路径 回溯法 - 类似于 BF算法 试图产生所有可能的解决方案, 但每次生成解决方案测试如果它满足所有条件...否则回溯并继续寻找不同路径的解决方案。...B 跳跃游戏 B 独特路径 A 哈密顿图 - 恰好访问每个顶点一次 A 八皇后问题 A 骑士巡逻 A 组合求和 - 从规定的总和中找出所有的组合 Branch & Bound 如何使用本仓库 安装依赖

    1.4K10
    领券