题目
A文件的含有M行URL的记录,B文件含有N行URL的记录,找出 两个记录里相同的URL,并标记出B文件每个URL在A文件中的位置。
分析
初见此题,很容易就会想到采用遍历的方式一条一条去找,那么该方法的时间复杂度为O(M*N)。
若是采用字典树来解决此题,则可以降低时间复杂度:
1 对A进行字典树建树,该过程的时间复杂度为O(M)
2 逐条遍历B中的记录,去字典树中查询,单条url的查询时间复杂度与树的深度有关
,即与url的长度有关,故该过程的时间复杂度为O(1),则N条记录的时间复杂度为O(N)
由上可得,总时间复杂度为O(M)+O(N)。
同理,当然也可以对B进行建树,逐条查询A中的记录,实际应用中一般是对字典进行建树,这也是字典树的由来。
JS实现
1 | function TreeNode(ch) { |