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.pswp.cn/web/74795.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74795.shtml
英文地址,請注明出處:http://en.pswp.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…