一个题目
来源: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回答
-
很明显就是一个非常纯粹的 Trie 的问题:)
继续加油!:)
00
相似问题