Leetcode 3508. Implement Router

  • Leetcode 3508. Implement Router
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3508. Implement Router

1. 解题思路

这一题就是按照题意写作一下对应的函数即可。

我们需要注意的是,这里,定义的类当中需要包含以下一些内容:

  1. 一个所有item的集合,来快速判断当前给到的包是否已经出现过了;
  2. 一个按照时间戳以及输入顺序有序排列的所有package的队列,从而确保可以弹出最早的包;
  3. 一个按照destination进行分块,且各自按照timestamp进行有序排列的序列,从而使得可以对getCount函数进行快速实现。

2. 代码实现

给出python代码实现如下:

class Router:def __init__(self, memoryLimit: int):self.idx = 0self.memoryLimit = memoryLimitself.seen = set()self.packets = []self.groups = defaultdict(list)def addPacket(self, source: int, destination: int, timestamp: int) -> bool:if (source, destination, timestamp) in self.seen:return Falseif len(self.packets) == self.memoryLimit:self.forwardPacket()self.seen.add((source, destination, timestamp))bisect.insort(self.packets, (timestamp, self.idx, source, destination))bisect.insort(self.groups[destination], (timestamp, self.idx))self.idx += 1return Truedef forwardPacket(self) -> List[int]:if len(self.packets) == 0:return []timestamp, idx, source, destination = self.packets.pop(0)self.seen.remove((source, destination, timestamp))self.groups[destination].pop(bisect.bisect_left(self.groups[destination], (timestamp, idx)))return [source, destination, timestamp]def getCount(self, destination: int, startTime: int, endTime: int) -> int:left = bisect.bisect_left(self.groups[destination], (startTime, -1))right = bisect.bisect_left(self.groups[destination], (endTime+1, -1))return right-left

提交代码评测得到:耗时544ms,占用内存101.5MB。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux: 系统内核中的信号

目录 一 前言 二 信号在内核中的表示 三 sigset_t 四 信号集操作 1. sigpending() 2. sigemptyset() 3. sigfillset() 4. sigaddset ()和sigdelset() 5. sigismember() 6. sigprocmask() 五 深入理解信号的捕捉流程 一 前言 在Linux: 进程信号初识-CSDN博客信…

Nginx-keepalived-高可用

Nginx 高可用 通常 借助 Keepalived 实现, Keepalived 能通过 VRRP (虚拟路由冗余协议)让多个 Nginx 服务器 组成一个 热备集群,当主服务器故障时自动切换到备用服务器,保障服务不间断。 一、环境准备 角色IP 地址主…

使用python完成手写数字识别

入门图像识别的第一个案例,看到好多小伙伴分享,也把自己当初的思路捋捋,写成一篇博客,作为记录和分享,也欢迎各位交流讨论。 实现思路 数据集:MNIST(包含60,000个训练样本和10,000个测试样本) 深度学习框架:Keras(基于TensorFlow) 模型架构:卷积神经网络(CNN) 实…

Java学习总结-多线程-三种创建方法

什么是线程? 线程(Thread)是程序内部的一条执行流程。 程序如果只有一条执行流程,那这个程序就是单线程程序。 什么是多线程? 多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行…

电动垂直起降飞行器(eVTOL)

电动垂直起降飞行器(eVTOL)的详细介绍,涵盖定义、技术路径、应用场景、市场前景及政策支持等核心内容: 一、定义与核心特性 eVTOL(Electric Vertical Take-off and Landing)即电动垂直起降飞行器&#xf…

ensp 网络模拟器 思科华为基于VLANIF的公司网络搭建

该文章仅记录作业配置过程 如有雷同纯属巧合 一. 其它(共1题,100分) 1. (其它) 为大学生公司创建部门VLAN 1.项目 背景 为大学生公司现有财务部、技术部和业务部,出于数据安全的考虑,各部门的计算机需进行隔离。公…

使用`sklearn`中的逻辑回归模型进行股票的情感分析,以及按日期统计积极和消极评论数量的功能

以下是完成上述任务的Python代码,可在Jupyter Notebook中运行。此代码包含了使用sklearn中的逻辑回归模型进行情感分析,以及按日期统计积极和消极评论数量的功能。 import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer f…

oracle批量删除分区

为了清理数据,往往需要删除一些分区 简单查看当前分区 附件 --创建测试表 -- drop table test_part purge;CREATE TABLE test_part (sales_id NUMBER,sale_date DATE,amount NUMBER ) PARTITION BY RANGE (sale_date) INTERVAL (INTERVAL 1 MONTH) -- 每个月创建…

java流程控制08:For循环

For循环 虽然所有循环结构都可以用while或者do…while表示,但Java提供了另一种语句-----for循环,使一些循环结构变得更加简单。 for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。 for循环执行的次数是在执行前就确定的。…

嵌入式软件开发调试方法

文章目录 1. 利于函数返回值,retrurn 定位错误位置2. 合理使用逻辑分析仪(正点原子 厉害!!) 1. 利于函数返回值,retrurn 定位错误位置 如下图所示,设置不同的返回值,0是ok的,其他值均为失败&…

P1025 [NOIP 2001 提高组] 数的划分(DFS)

题目描述 将整数 n 分成 k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。 例如:n7,k3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1. 问有多少种不同的分法。 输入格式 n,k …

设计模式简述(三)工厂模式

工厂模式 描述简单工厂(静态工厂)工厂方法模式 抽象工厂增加工厂管理类使用 描述 工厂模式用以封装复杂的实例初始化过程,供外部统一调用 简单工厂(静态工厂) 如果对象创建逻辑简单且一致,可以使用简单工…

批量将 JSON 转换为 Excel/思维导入等其它格式

json 格式相信对大家来说都不陌生,这是一种轻量级的结构化数据,可以对对象进行描述。json 格式也是一种普通的文本文件格式,用记事本就能够打开编辑 json 格式的文件,可以很方便的转换为其他格式。今天要给大家介绍的就是如何将 j…

电脑有时出现检测不到音箱设备怎么办?

问题 有时候电脑开机之后就检测不到音箱,经过我一顿检查发现是检测不到声卡,即使拔插了音箱也没用,但是当我重启或者休眠之后再重启发现就检测到了 解决方案 方案一 重启或者休眠之后再开启 方案二 使用powershell指令将声卡弹出和载入…

Qwen-Agent框架的文件相关操作:从Assistant到BasicDocQA

在前面的几篇文章如《针对Qwen-Agent框架的Function Call及ReAct的源码阅读与解析:Agent基类篇》 、《基于Qwen-Agent框架的Function Call及ReAct方式调用自定义工具》、 《针对Qwen-Agent框架的源码阅读与解析:FnCallAgent与ReActChat篇》中&#xff0c…

RSSI定位程序,N个锚点、三维空间,使用CKF对轨迹进行滤波,附MATLAB代码的下载链接

本文所述的程序实现三维空间中基于RSSI信号的多锚点定位,并采用容积卡尔曼滤波(CKF)对动态轨迹进行降噪优化。代码包含完整的定位仿真流程,涵盖环境建模、信号强度模拟、定位解算、轨迹滤波及可视化分析模块 文章目录 程序介绍概述…

开源软件与自由软件:一场理念与实践的交锋

在科技的世界里,“开源软件”和“自由软件”这两个词几乎无人不知。很多人或许都听说过,它们的代码是公开的,可以供所有人查看、修改和使用。然而,若要细究它们之间的区别,恐怕不少朋友会觉得云里雾里。今天&#xff0…

C++ - 头文件基础(常用标准库头文件、自定义头文件、头文件引入方式、防止头文件重复包含机制)

一、头文件 在 C 中&#xff0c;头文件&#xff08;.h&#xff09;用于函数声明、类定义、宏定义等等 在 Visual Studio 中&#xff0c;头文件通常放在头文件目录中&#xff0c;头文件实现通常放在源文件目录中 二、常用标准库头文件 1、输入输出 <iostream> 标准输入…

CSS 背景属性学习笔记

一、CSS 背景属性概述 CSS 背景属性用于定义 HTML 元素的背景效果&#xff0c;主要包括以下几种属性&#xff1a; background-color&#xff1a;定义元素的背景颜色。 background-image&#xff1a;定义元素的背景图像。 background-repeat&#xff1a;定义背景图像如何重复…

Qt实现鼠标拖动窗口

Qt实现鼠标拖动窗口 1、设置窗口无边框2、重写鼠标点击&#xff0c;移动函数2.1添加头文件2.2 重写函数2.3 添加定义 3、定义一个偏移值4、判断鼠标左键是否按下并计算偏移值5、移动窗口6、.h文件和.cpp文件6.1 .h文件6.2 .cpp文件 7、总结 1、设置窗口无边框 this->setWin…