一个题目

来源:9-9 LCS,最短路,求动态规划的具体解以及更多

讲武德的年轻人

2022-10-15

bobo老师,最近在看一家公司的面经,有个题目想请教您。题目是这样的:给定两个int[]型的list: list1和list2。每个list的长度是1-10^5,list[i]的范围是1-10 ^9。问题是,返回list1和list2构成的pair中,前缀最长的数值。比如list1 = [123, 35345], list2 = [12, 35346],应该返回4, 因为list1中的35345和list2中的35346含有共同的前缀3534。

我的想法是,暴力的双循环可以解,但是会超时。所以可以用前缀树(Trie)来解决,首先针对list1的每个数字构建Trie,Trie的节点就是数字的字符。构建完毕后,再扫描list2,看每个数字可以在Trie中走的最远的长度。这样,时间复杂度是O(N),因为数字长度最长为9,所以常数项最多是9。不知您觉得这个解法如何?是否还有最优解法呢?谢谢!

写回答

1回答

liuyubobobo

2022-10-15

很明显就是一个非常纯粹的 Trie 的问题:)


继续加油!:)

0
0

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程