面试算法题
罗侯
天选程序员 10.24生日
tencent -> bytedance -> kuaishou -> alibaba
展开
-
如何判断一个链表是否有环
如何判断一个链表是否有环问题陈述 如何判断一个链表是否有环,如果有,则返回第一个进入环的节点,没有则返回null。思路 如果一个链表无环,那么遍历链表一定可以遇到链表的终点;如果链表有环,那么遍历链表就永远在环内转下去。具体如下: 1.设置快慢指针分别为fast和slow。开始,slow和fast都指向链表的头节点head。然后slow每次移动一步,fast每次移动两部,在链表中遍...原创 2019-02-09 19:58:10 · 1814 阅读 · 0 评论 -
如何判断两个无环链表是否相交
如何判断两个无环链表是否相交问题 如何判断两个无环链表是否相交,相交则返回第一个相交节点,不相交返回null。思路 如果两个无环链表相交,那么从相交节点开始,一直到两个链表终止的这段,二者共享。具体如下: 1.链表1从头节点开始,走到最后一个节点,统计链表1的长度记为len1,同时记录链表1的最后一个节点记为end1。 2.链表2从头节点开始,走到最后一个节点,统计链表2的长度...原创 2019-02-09 20:14:13 · 912 阅读 · 0 评论 -
如何判断两个有环链表是否相交
如何判断两个有环链表是否相交问题 如何判断两个有环链表是否相交,相交则返回第一个相交节点,不相交则返回null。思路 我们已经得到了两个链表各自的第一个入环节点,假设链表1的第一个入环节点为loop1,链表2的第一个入环节点为loop2。具体如下: 1.如果loop1 == loop2,拓扑结构如图: 该情况下,考虑链表1从头开始到loop1这一段与链表2从头开始到loop2...原创 2019-02-09 20:39:58 · 1936 阅读 · 0 评论 -
两个单链表相交的一系列问题
两个单链表相交的一系列问题要求 单链表可能有环,可能无环头节点 head1 和 head2, 这两个链表可能相交,也可能不相交。请实现一个函数, 如果两个链表相交, 请返回相交的第一个节点; 如果不相交, 返回 null 即可。 如果链表1的长度为NNN,链表2的长度为MMM,时间复杂度请达到O(N+M)O(N+M)O(N+M),额外的空间复杂度请达到O(1)O(1)O(1)。解答...原创 2019-02-09 20:47:21 · 360 阅读 · 0 评论 -
矩阵快速幂求解斐波那契系列问题
矩阵快速幂求解斐波那契问题问题 求解斐波那契数列第NNN项分析 对于求第NNN项的值,可通过矩阵快速幂将时间复杂度降至O(logN)O(logN)O(logN)。递归式F(N)=F(N−1)+F(N−2)F(N)=F(N-1)+F(N-2)F(N)=F(N−1)+F(N−2),是一个二阶的递推数列,可用矩阵乘法表示,且状态矩阵为2×22\times 22×2的矩阵:(F(n),...原创 2019-02-10 20:08:38 · 3147 阅读 · 0 评论 -
在元素重复三次的数组中查找只出现一次的元素
在元素重复三次的数组中查找只出现一次的元素问题 给定一个数组,它里面除了一个元素外,其他元素都重复了三次,要求空间复杂读为O(1)O(1)O(1),时间复杂度为O(n)O(n)O(n),查询只出现一次的元素。分析 不能进行排序查找,排序时间复杂度为O(nlogn)O(nlogn)O(nlogn),所以必须O(n)O(n)O(n)遍历数组得出结果。 我们考虑位运算。除了一个元素之外,...原创 2019-02-11 21:48:23 · 1046 阅读 · 0 评论 -
快速在数组中查找重复和遗失的元素
快速在数组中查找重复和遗失的元素问题 给定集合Z={x1,x2,...,xn}Z = \{ x_1, x_2, ..., x_n \}Z={x1,x2,...,xn}。集合内包含nnn个元素,每个元素都是数字。对于另一个集合AAA,它缺失了ZZZ中的一个元素,并重复了一个元素。 希望设计一个算法,找出重复和缺失的元素。空间复杂度O(1)O(1)O(1),时间复杂度O(n)O(n)O...原创 2019-02-11 23:45:25 · 526 阅读 · 0 评论