关注
问答题参考解法:
题目大意:给你一个ipv4地域库(ipv4地址的网段表示法,比如12.34.56.0/24,对应相应地理位置的表),保证各个网段互不重叠,但是一个地域可以对应多个网段。请设计一个数据结构,能过快速地查询用户询问的ip所对应的地理位置。请说明你的方法的时空复杂度。
参考解法:
计算机中ipv4地址是32位无符号整数。
我们将ipv4的地址和网段都变成32位无符号整数,然后转换成对应的32位的二进制表示。
之后使用字典树/键树/Trie(二叉树也可以),每个节点有2个分支:一个分支表示下一位是0,另一个分支表示下一位是1.
首先要将所有地域库的信息插入这个树中。对网段,保留相应的掩码长度,在掩码长度最后一位对应的节点,顺带标记上,这是一个网段节点,对应的地域为xxx。
插入完成之后,我们可以处理查询。对每个查询,转成32位的01串,在树上,根据每一位的具体值,决定往下走到哪个节点,来进行查找。当走到某个节点,走不下去的时候:
如果这个节点没有地域信息,说明库中没有对应条目。
如果这个节点有地域信息,说明我们找到了,返回这个地域信息。
综上所述:
插入阶段:
时间复杂度O(32n)=O(n)
空间复杂度O(32n)=O(n)
其中n为地址库中的地址数目
查询阶段:
时间复杂度O(32)=O(1)
空间复杂度O(1)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 我因为在开水团面活水被光速开除2.0W
- 2... 作为面试官,比较喜欢听到「实习收获」回答是什么样的?5354
- 3... 字节last day,知无不言!5353
- 4... 字节剪映后端暑期面经(附timeline)5095
- 5... 你是个学计算机的大学生4936
- 6... 分享我的秋招之路(2025届版)4860
- 7... 找实习三个月,感觉已无心气4582
- 8... 🐧应届生选offer防踩坑指南:为什么"有鹅选鹅"是当前最佳策略?3760
- 9... 27届前端小趴菜如何拿下三个大厂offer 📚3744
- 10... 你的经历比较单薄, 但简历又弥补了这一点--双非仔个人简历分享3290
正在热议
更多
# 我的实习收获 #
8007次浏览 163人参与
# TP-LINK工作体验 #
46689次浏览 825人参与
# 实习吐槽大会 #
10582次浏览 44人参与
# 你的办公桌上都有什么? #
6011次浏览 50人参与
# 晒一晒你的工位 #
77424次浏览 258人参与
# 入职第三天,晒晒你的工位 #
30721次浏览 145人参与
# 实习中的菜狗时刻 #
359190次浏览 3271人参与
# 今年形式下双非本找得到工作吗 #
137803次浏览 1042人参与
# Offer比较,求稳定还是求发展 #
52374次浏览 248人参与
# 来选选带哪个offer回家过年 #
659630次浏览 5271人参与
# 工作压力大怎么缓解 #
77995次浏览 927人参与
# 电网笔面经互助 #
33223次浏览 331人参与
# 薪资一样,你会选择去大厂还是小公司 #
19281次浏览 116人参与
# 24届的你们现状如何了? #
69461次浏览 399人参与
# 我的租房踩坑经历 #
1193次浏览 35人参与
# 你的秋招第一场笔试是哪家 #
129389次浏览 1404人参与
# 高学历就一定能找到好工作吗? #
47257次浏览 583人参与
# 想给25届机械人的秋招建议 #
26453次浏览 219人参与
# 25届非技术实习投递记录 #
116328次浏览 969人参与
# 机械人,你的秋招第一份简历被谁挂了 #
137780次浏览 1972人参与