国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Leetcode 劍指 Offer II 042. 最近的請求次數(shù)

這篇具有很好參考價(jià)值的文章主要介紹了Leetcode 劍指 Offer II 042. 最近的請求次數(shù)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

題目難度: 簡單

原題鏈接

今天繼續(xù)更新 Leetcode 的劍指 Offer(專項(xiàng)突擊版)系列, 大家在公眾號 算法精選 里回復(fù) 劍指offer2 就能看到該系列當(dāng)前連載的所有文章了, 記得關(guān)注哦~

題目描述

寫一個(gè) RecentCounter 類來計(jì)算特定時(shí)間范圍內(nèi)最近的請求。

請實(shí)現(xiàn) RecentCounter 類:

  • RecentCounter() 初始化計(jì)數(shù)器,請求數(shù)為 0 。
  • int ping(int t) 在時(shí)間 t 添加一個(gè)新請求,其中 t 表示以毫秒為單位的某個(gè)時(shí)間,并返回過去 3000 毫秒內(nèi)發(fā)生的所有請求數(shù)(包括新請求)。確切地說,返回在 [t-3000, t] 內(nèi)發(fā)生的請求數(shù)。

保證 每次對 ping 的調(diào)用都使用比之前更大的 t 值。

示例:

  • 輸入:
    • inputs = [“RecentCounter”, “ping”, “ping”, “ping”, “ping”]
    • inputs = [[], [1], [100], [3001], [3002]]
  • 輸出:
    • [null, 1, 2, 3, 3]
  • 解釋:
    • RecentCounter recentCounter = new RecentCounter();
    • recentCounter.ping(1); // requests = [1],范圍是 [-2999,1],返回 1
    • recentCounter.ping(100); // requests = [1, 100],范圍是 [-2900,100],返回 2
    • recentCounter.ping(3001); // requests = [1, 100, 3001],范圍是 [1,3001],返回 3
    • recentCounter.ping(3002); // requests = [1, 100, 3001, 3002],范圍是 [2,3002],返回 3

提示:

  • 1 <= t <= 10^9
  • 保證每次對 ping 調(diào)用所使用的 t 值都 嚴(yán)格遞增
  • 至多調(diào)用 ping 方法 10^4 次

題目思考

  1. 可以使用什么數(shù)據(jù)結(jié)構(gòu)模擬整個(gè)過程?

解決方案

思路
  • 分析題目, 要想動(dòng)態(tài)維護(hù)過去 3000 毫秒內(nèi)發(fā)生的所有請求數(shù), 需要支持一端添加新元素, 另一端移除老元素, 顯然可以使用雙端隊(duì)列來模擬這個(gè)過程
  • 每次調(diào)用 ping 函數(shù)時(shí):
    • 先將新請求添加到隊(duì)列末尾
    • 然后循環(huán)判斷隊(duì)列開頭請求是否不在時(shí)間窗口內(nèi), 不在的話移除它并繼續(xù)循環(huán)
    • 循環(huán)結(jié)束時(shí), 隊(duì)列里存儲的就是時(shí)間窗口內(nèi)的所有請求, 返回隊(duì)列長度即可
  • 下面的代碼就對應(yīng)了上面的整個(gè)過程, 并且有詳細(xì)的注釋, 方便大家理解
復(fù)雜度
  • 時(shí)間復(fù)雜度 O(1): 每個(gè)請求最多入隊(duì)和出隊(duì)各一次, 所以每次操作的均攤時(shí)間復(fù)雜度為 O(1)
  • 空間復(fù)雜度 O(N): 雙端隊(duì)列最多存儲全部 N 個(gè)元素
代碼
class RecentCounter:
    def __init__(self):
        # 初始化一個(gè)雙端隊(duì)列
        self.q = collections.deque()

    def ping(self, t: int) -> int:
        # 將當(dāng)前元素加入隊(duì)尾
        self.q.append(t)
        # 這里由于剛?cè)腙?duì)一個(gè)元素, 且其一定不滿足循環(huán)條件
        # 所以可以保證隊(duì)列至少有一個(gè)元素(t), 無需判斷q是否為空
        while self.q[0] < t - 3000:
            # 隊(duì)頭元素不在時(shí)間窗口[t-3000,t]內(nèi)了, 將其出隊(duì)
            self.q.popleft()
        # 最終隊(duì)列剩余的元素個(gè)數(shù)即為時(shí)間窗口內(nèi)的總請求數(shù)
        return len(self.q)

大家可以在下面這些地方找到我~??

我的 GitHub

我的 Leetcode

我的 CSDN

我的知乎專欄

我的頭條號

我的牛客網(wǎng)博客

我的公眾號: 算法精選, 歡迎大家掃碼關(guān)注~??

Leetcode 劍指 Offer II 042. 最近的請求次數(shù),Leetcode,leetcode,算法,職場和發(fā)展文章來源地址http://www.zghlxwxcb.cn/news/detail-690466.html

到了這里,關(guān)于Leetcode 劍指 Offer II 042. 最近的請求次數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • LeetCode:劍指 Offer 58 - II. 左旋轉(zhuǎn)字符串

    LeetCode:劍指 Offer 58 - II. 左旋轉(zhuǎn)字符串

    ??道阻且長,行則將至。?? ??算法,不如說它是一種思考方式?? 算法專欄: ????123 題目描述 :字符串的左旋轉(zhuǎn)操作是把字符串前面的若干個(gè)字符轉(zhuǎn)移到字符串的尾部。請定義一個(gè)函數(shù)實(shí)現(xiàn)字符串左旋轉(zhuǎn)操作的功能。比如,輸入字符串\\\"abcdefg\\\"和數(shù)字2,該函數(shù)將返回左旋

    2024年02月02日
    瀏覽(25)
  • 【LeetCode75】第二十七題(933)最近的請求次數(shù)

    【LeetCode75】第二十七題(933)最近的請求次數(shù)

    目錄 題目: 示例: 分析: 代碼+運(yùn)行結(jié)果: 首先這是LeetCode75里第一道設(shè)計(jì)類的題目,這種類型的題目會(huì)比較新穎,就是按照題目要求來設(shè)計(jì)一個(gè)類。然后測試用例是模擬真實(shí)調(diào)用類的成員函數(shù)的。 這道題也算是簡單題,整個(gè)類除了構(gòu)造函數(shù)以外就一個(gè)成員函數(shù),測試用例

    2024年02月13日
    瀏覽(34)
  • Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】

    Leetcode-每日一題【劍指 Offer II 010. 和為 k 的子數(shù)組】

    給定一個(gè)整數(shù)數(shù)組和一個(gè)整數(shù)?k ,請找到該數(shù)組中和為?k?的連續(xù)子數(shù)組的個(gè)數(shù)。 示例 1: 輸入: nums = [1,1,1], k = 2 輸出: 2 解釋: 此題 [1,1] 與 [1,1] 為兩種不同的情況 示例 2: 輸入: nums = [1,2,3], k = 3 輸出: 2 提示: 1 = nums.length = 2 * 104 1000 = nums[i] = 1000 107?= k = 107 前置知識 前綴和

    2024年02月15日
    瀏覽(20)
  • Leetcode-每日一題【劍指 Offer 32 - II. 從上到下打印二叉樹 II】

    Leetcode-每日一題【劍指 Offer 32 - II. 從上到下打印二叉樹 II】

    從上到下按層打印二叉樹,同一層的節(jié)點(diǎn)按從左到右的順序打印,每一層打印到一行。 例如: 給定二叉樹:? [3,9,20,null,null,15,7] , ??? 3 ?? / ? 9? 20 ??? /? ?? 15?? 7 返回其層次遍歷結(jié)果: [ ? [3], ? [9,20], ? [15,7] ] 提示: 節(jié)點(diǎn)總數(shù) = 1000 1.題目要求我們從上到下按層打印二

    2024年02月12日
    瀏覽(15)
  • (字符串 ) 劍指 Offer 58 - II. 左旋轉(zhuǎn)字符串 ——【Leetcode每日一題】

    (字符串 ) 劍指 Offer 58 - II. 左旋轉(zhuǎn)字符串 ——【Leetcode每日一題】

    難度:簡單 字符串的左旋轉(zhuǎn)操作是把字符串前面的若干個(gè)字符轉(zhuǎn)移到字符串的尾部。請定義一個(gè)函數(shù)實(shí)現(xiàn)字符串左旋轉(zhuǎn)操作的功能。比如,輸入字符串\\\"abcdefg\\\"和數(shù)字2,該函數(shù)將返回左旋轉(zhuǎn)兩位得到的結(jié)果\\\"cdefgab\\\"。 示例 1: 輸入: s = “abcdefg”, k = 2 輸出: “cdefgab” 示例 2:

    2024年02月08日
    瀏覽(24)
  • 【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動(dòng)態(tài)規(guī)劃】

    【LeetCode: 劍指 Offer II 089. 房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動(dòng)態(tài)規(guī)劃】

    ??作者簡介:碩風(fēng)和煒,CSDN-Java領(lǐng)域新星創(chuàng)作者??,保研|國家獎(jiǎng)學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文|經(jīng)驗(yàn)分享|好用的網(wǎng)站工具分享?????? ??座右銘:人生如棋,我愿為卒,行動(dòng)雖慢,可誰曾見我后退一步??????? 劍指 Offer II 089. 房屋偷盜

    2024年02月02日
    瀏覽(25)
  • 【LeetCode: 劍指 Offer II 090. 環(huán)形房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動(dòng)態(tài)規(guī)劃】

    【LeetCode: 劍指 Offer II 090. 環(huán)形房屋偷盜(打家竊舍) | 暴力遞歸=>記憶化搜索=>動(dòng)態(tài)規(guī)劃】

    ??作者簡介:碩風(fēng)和煒,CSDN-Java領(lǐng)域新星創(chuàng)作者??,保研|國家獎(jiǎng)學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文|經(jīng)驗(yàn)分享|好用的網(wǎng)站工具分享?????? ??座右銘:人生如棋,我愿為卒,行動(dòng)雖慢,可誰曾見我后退一步??????? 大家再看這道題目之前,

    2023年04月14日
    瀏覽(17)
  • 劍指 Offer 34. 二叉樹中和為某一值的路徑 / LeetCode 113. 路徑總和 II(深度優(yōu)先搜索)

    劍指 Offer 34. 二叉樹中和為某一值的路徑 / LeetCode 113. 路徑總和 II(深度優(yōu)先搜索)

    鏈接:劍指 Offer 34. 二叉樹中和為某一值的路徑;LeetCode 113. 路徑總和 II 難度:中等 給你二叉樹的根節(jié)點(diǎn) root 和一個(gè)整數(shù)目標(biāo)和 targetSum ,找出所有 從根節(jié)點(diǎn)到葉子節(jié)點(diǎn) 路徑總和等于給定目標(biāo)和的路徑。 葉子節(jié)點(diǎn) 是指沒有子節(jié)點(diǎn)的節(jié)點(diǎn)。 示例 1: 輸入:root = [5,4,8,11,null,1

    2024年02月03日
    瀏覽(25)
  • 劍指 Offer 56 - II. 數(shù)組中數(shù)字出現(xiàn)的次數(shù) II(位運(yùn)算 / 哈希表 / 排序)

    鏈接:劍指 Offer 56 - II. 數(shù)組中數(shù)字出現(xiàn)的次數(shù) II 難度:中等 在一個(gè)數(shù)組 nums 中除一個(gè)數(shù)字只出現(xiàn)一次之外,其他數(shù)字都出現(xiàn)了三次。請找出那個(gè)只出現(xiàn)一次的數(shù)字。 示例 1: 輸入:nums = [3,4,3,3] 輸出:4 示例 2: 輸入:nums = [9,1,7,9,7,9,7] 輸出:1 限制: 1 = nums.length = 10000 1

    2024年02月13日
    瀏覽(22)
  • 【LeetCode】劍指 Offer(27)

    【LeetCode】劍指 Offer(27)

    目錄 題目:劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過啦?。?! 寫在最后: 那么這道題呢, 如果只是作為一道題,或者說筆試題, 我們當(dāng)然是二話不說直接暴力拿下, 來看代碼: 是的,就是這么簡單,三行代碼暴力拿下

    2023年04月13日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包