当前位置: 首页 > news >正文

沙田网站仿做网站建设最好的

沙田网站仿做,网站建设最好的,做电脑网站手机能显示不出来怎么办,深圳外贸网站🌈 个人主页:(时光煮雨) 🔥 高质量专栏:vulnhub靶机渗透测试 👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~) 🌵目录🌵 难度 ⭐⭐⭐ 题目回顾 ✅解题思路 💖概述 💓核…

🌈 个人主页:(时光煮雨)
🔥 高质量专栏:vulnhub靶机渗透测试
👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~)


🌵目录🌵

  • 难度 ⭐⭐⭐
  • 题目回顾
  • ✅解题思路
    • 💖概述
    • 💓核心思路
  • ✅代码实现
  • ✅复杂度分析
  • ✅测试用例验证
    • ✅示例1
    • ✅示例2
    • ✅边缘用例
  • 💖总结
  • 🤝 期待与你共同进步
  • 📚 参考文档


难度 ⭐⭐⭐


题目回顾

请你设计一个数据结构来高效管理网络路由器中的数据包。每个数据包包含以下属性:

  • source:生成该数据包的机器的唯一标识符。
  • destination:目标机器的唯一标识符。
  • timestamp:该数据包到达路由器的时间戳。

实现 Router 类:
Router(int memoryLimit):初始化路由器对象,并设置固定的内存限制。

  • emoryLimit 是路由器在任意时间点可以存储的 最大 数据包数量。
  • 如果添加一个新数据包会超过这个限制,则必须移除 最旧的 数据包以腾出空间。

bool addPacket(int source, int destination, int timestamp):将具有给定属性的数据包添加到路由器。

  • 如果路由器中已经存在一个具有相同 source、destination 和 timestamp 的数据包,则视为重复数据包。
  • 如果数据包成功添加(即不是重复数据包),返回 true;否则返回 false。

int[] forwardPacket():以 FIFO(先进先出)顺序转发下一个数据包。

  • 从存储中移除该数据包。
  • 以数组 [source, destination, timestamp] 的形式返回该数据包。
  • 如果没有数据包可以转发,则返回空数组。

int getCount(int destination, int startTime, int endTime):

  • 返回当前存储在路由器中(即尚未转发)的,且目标地址为指定 destination 且时间戳在范围 [startTime, endTime](包括两端)内的数据包数量。

注意:对于 addPacket 的查询会按照 timestamp 的递增顺序进行。
示例 1:

输入:
[“Router”, “addPacket”, “addPacket”, “addPacket”, “addPacket”, “addPacket”, “forwardPacket”, “addPacket”, “getCount”]
[[3], [1, 4, 90], [2, 5, 90], [1, 4, 90], [3, 5, 95], [4, 5, 105], [], [5, 2, 110], [5, 100, 110]]
输出:
[null, true, true, false, true, true, [2, 5, 90], true, 1]
解释:
Router router = new Router(3); // 初始化路由器,内存限制为 3。
router.addPacket(1, 4, 90); // 数据包被添加,返回 True。
router.addPacket(2, 5, 90); // 数据包被添加,返回 True。
router.addPacket(1, 4, 90); // 这是一个重复数据包,返回 False。
router.addPacket(3, 5, 95); // 数据包被添加,返回 True。
router.addPacket(4, 5, 105); // 数据包被添加,[1, 4, 90] 被移除,因为数据包数量超过限制,返回 True。
router.forwardPacket(); // 转发数据包 [2, 5, 90] 并将其从路由器中移除。
router.addPacket(5, 2, 110); // 数据包被添加,返回 True。
router.getCount(5, 100, 110); // 唯一目标地址为 5 且时间在 [100, 110] 范围内的数据包是 [4, 5, 105],返回 1。

示例 2:

输入:
[“Router”, “addPacket”, “forwardPacket”, “forwardPacket”]
[[2], [7, 4, 90], [], []]
输出:
[null, true, [7, 4, 90], []]
解释:
Router router = new Router(2); // 初始化路由器,内存限制为 2。
router.addPacket(7, 4, 90); // 返回 True。
router.forwardPacket(); // 返回 [7, 4, 90]。
router.forwardPacket(); // 没有数据包可以转发,返回 []。

提示:

  • 2 <= memoryLimit <= 10**5
  • 1 <= source, destination <= 2 * 10**5
  • 1 <= timestamp <= 10**9
  • 1 <= startTime <= endTime <= 10**9
  • addPacket、forwardPacket 和 getCount 方法的总调用次数最多为 10**5。
  • 对于 addPacket 的查询,timestamp 按递增顺序给出。

✅解题思路

💖概述

设计一个路由器数据结构,支持添加数据包(避免重复)、FIFO转发数据包,以及查询特定目标地址在时间范围内的数据包数量。核心在于高效处理内存限制下的数据包管理,避免重复,并支持快速范围查询。

💓核心思路

  1. ​​内存管理​​:使用队列(FIFO)维护数据包顺序,当内存满时移除最旧数据包。
  2. 去重​​:使用集合快速检查重复数据包(三元组(source, destination, timestamp))。
  3. ​​范围查询​​:为每个目标地址维护一个时间戳队列(按添加顺序递增),利用二分查找高效计数。
  4. ​​动态维护​​:添加数据包时触发内存检查,转发时同步移除相关数据。

✅代码实现

from bisect import bisect_left, bisect_right
from collections import deque, defaultdict
from typing import Listclass Router:def __init__(self, memoryLimit: int):self.memory_limit = memoryLimitself.packet_q = deque()  # 数据包队列(FIFO)self.packet_set = 
http://www.dtcms.com/a/485546.html

相关文章:

  • 永济做网站单价做网站80端口
  • 上市公司网站建设评价网站建设论文读书笔记
  • 庄浪县县住房建设局网站建盏金盏能不能喝茶
  • 上海品牌网站建设公司排名怎么做广告宣传效果好
  • 怎么搭建自己的网站挣钱企业邮箱注册域名
  • 做网站详细教程建筑网站architect
  • 建站比较好的公司益阳网站建设广告
  • 宿州移动网站建设广西建设厅网站是什么
  • 景点网站怎么做德语网站建设
  • 三合一网站和传统网站wordpress 颜色插件
  • 深圳罗湖网站设计公司91福利社区wordpress
  • 酒泉建设厅网站wordpress商业网站
  • 模板网站 怎么做优化网站设计基础
  • 旅游的网站怎么做金华网站建设报价
  • 企业网站做留言板有什么优势陕西网站建设培训
  • 公司做网站的申请上海做网站比较好的
  • 免费自助网站建设郑州汉狮哪家做网站好
  • 湛江网站公司网站建设选择云主机吗
  • 河南映天建设网站深圳住建局工程交易中心
  • 简单网站php源码下载浙江温州乐清
  • 巅云建站网站模板 在哪购买
  • 公司网站域名怎么取金品诚企网站建设
  • 包头 网站建设广州市网站设计
  • 旧域名新网站大地保险网站
  • 视频教学网站怎么做怎样开发一个微信公众号
  • 档案馆网站安全建设网页设计色彩搭配
  • 企业网站源码 php商贸公司名字推荐
  • 京东商城网站建设教程中信建设有限责任公司是央企吗
  • 做微信文章的网站邯郸市信息港
  • 下载做蛋糕网站铜仁住房和城乡建设局网站