Leetcode2080:區間內查詢數字的頻率

題目描述:

請你設計一個數據結構,它能求出給定子數組內一個給定值的?頻率?。

子數組中一個值的?頻率?指的是這個子數組中這個值的出現次數。

請你實現?RangeFreqQuery?類:

  • RangeFreqQuery(int[] arr)?用下標從?0?開始的整數數組?arr?構造一個類的實例。
  • int query(int left, int right, int value)?返回子數組?arr[left...right]?中?value?的?頻率?。

一個?子數組?指的是數組中一段連續的元素。arr[left...right]?指的是?nums?中包含下標?left?和?right?在內?的中間一段連續元素。?

?代碼思路:

類初始化?__init__?方法

  1. 輸入參數:接收一個整數列表?arr
  2. 數據結構:使用?defaultdict(list)?來存儲每個值在數組?arr?中出現的所有索引。defaultdict?是 Python?collections?模塊中的一個容器,它允許我們通過默認工廠函數(這里是?list)來自動初始化缺失的鍵。
  3. 填充字典:遍歷數組?arr,對于每個元素?v?和其索引?i,將索引?i?添加到字典?dct?中鍵?v?對應的列表中。這樣,dct[value]?將會是一個列表,包含所有值為?value?的元素的索引。

查詢方法?query

  1. 輸入參數:接收三個整數?leftright?和?value,分別表示查詢的左邊界、右邊界和要查詢的值。
  2. 查詢邏輯
    • 使用?bisect.bisect_left?函數在?dct[value]?列表中查找第一個大于或等于?left?的索引的位置。這個位置之前的所有索引都不在查詢區間?[left, right]?內。
    • 使用?bisect.bisect_right?函數在?dct[value]?列表中查找第一個大于?right?的索引的位置。這個位置之前的所有索引(不包括這個位置本身)都在查詢區間?[left, right]?內。
    • 計算這兩個位置之間的差值,即?bisect_right?返回的位置減去?bisect_left?返回的位置。這個差值就是值?value?在區間?[left, right]?內出現的次數。

代碼實現:

class RangeFreqQuery:def __init__(self, arr: List[int]):self.dct = defaultdict(list)for i, v in enumerate(arr): self.dct[v].append(i)def query(self, left: int, right: int, value: int) -> int:return bisect.bisect_right(self.dct[value], right) - bisect.bisect_left(self.dct[value], left)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895832.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895832.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895832.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot自動裝配:約定大于配置的魔法解密

#### 一、自動裝配的哲學思考 在傳統Spring應用中,開發者需要手動配置大量的XML或JavaConfig。Spring Boot通過自動裝配機制實現了**約定大于配置**的設計理念,其核心思想可以概括為: 1. **智能預設**:基于類路徑檢測自動配置 2…

Fiddler筆記

文章目錄 一、與F12對比二、核心作用三、原理四、配置1.Rules:2.配置證書抓取https包3.設置過濾器4、抓取App包 五、模擬弱網測試六、調試1.線上調試2.斷點調試 七、理論1.四要素2.如何定位前后端bug 注 一、與F12對比 相同點: 都可以對http和https請求進行抓包分析…

Python爬蟲-貓眼電影的影院數據

前言 本文是該專欄的第46篇,后面會持續分享python爬蟲干貨知識,記得關注。 本文筆者以貓眼電影為例子,獲取貓眼的影院相關數據。 廢話不多說,具體實現思路和詳細邏輯,筆者將在正文結合完整代碼進行詳細介紹。接下來,跟著筆者直接往下看正文詳細內容。(附帶完整代碼) …

linux筆記:shell中的while、if、for語句

在Udig軟件的啟動腳本中使用了while循環、if語句、for循環,其他內容基本都是變量的定義,所以嘗試弄懂腳本中這三部分內容,了解腳本執行過程。 (1)while循環 while do循環內容如下所示,在循環中還用了expr…

利用分治策略優化快速排序

1. 基本思想 分治快速排序(Quick Sort)是一種基于分治法的排序算法,采用遞歸的方式將一個數組分割成小的子數組,并通過交換元素來使得每個子數組元素按照特定順序排列,最終將整個數組排序。 快速排序的基本步驟&#…

從零到一實現微信小程序計劃時鐘:完整教程

在本教程中,我們將一起實現一個微信小程序——計劃時鐘。這個小程序的核心功能是幫助用戶添加任務、設置任務的時間范圍,并且能夠刪除和查看已添加的任務。通過以下步驟,我們將帶你從零開始實現一個具有基本功能的微信小程序計劃時鐘。 項目…

idea日常報錯之UTF-8不可映射的字符

目錄 一、UTF-8不可映射的字符的解決 1、出現這種報錯的情形 2、具體解決辦法 前言: 在我們日常代碼編寫的時候可能會遇到各式各樣的錯誤,有時候并不是你改動了代碼,而是莫名其妙就出現的報錯,今天我就遇到一個在maven編譯的時候…

人工智能技術-基于長短期記憶(LSTM)網絡在交通流量預測中的應用

人工智能技術-基于長短期記憶(LSTM)網絡在交通流量預測中的應用 基于人工智能的智能交通管理系統 隨著城市化進程的加快,交通問題日益嚴峻。為了解決交通擁堵、減少交通事故、提高交通管理效率,人工智能(AI&#xff…

HTTP FTP SMTP TELNET 應用協議

1. 標準和非標準的應用協議 標準應用協議: 由標準化組織(如 IETF,Internet Engineering Task Force)制定和維護,具有廣泛的通用性和互操作性。這些協議遵循嚴格的規范和標準,不同的實現之間可以很好地進行…

Matlab離線安裝硬件支持包的方法

想安裝支持樹莓派的包,但是發現通過matlab安裝需要續訂維護服務 可以通過離線的方式安裝。 1. 下載SupportSoftwareDownloader Support Software Downloader - MATLAB & Simulink 登錄賬號 選擇對應的版本 2. 選擇要安裝的包 3.將下載的包copy到安裝目錄下 …

Django REST Framework (DRF) 中用于構建 API 視圖類解析

Django REST Framework (DRF) 提供了豐富的視圖類,用于構建 API 視圖。這些視圖類可以分為以下幾類: 1. 基礎視圖類 這些是 DRF 中最基礎的視圖類,通常用于實現自定義邏輯。 常用類 APIView: 最基本的視圖類,所有其…

MyBatis攔截器終極指南:從原理到企業級實戰

在本篇文章中,我們將深入了解如何編寫一個 MyBatis 攔截器,并通過一個示例來展示如何在執行數據庫操作(如插入或更新)時,自動填充某些字段(例如 createdBy 和 updatedBy)信息。本文將詳細講解攔…

137,【4】 buuctf web [SCTF2019]Flag Shop

進入靶場 都點擊看看 發現點擊work會增加¥ 但肯定不能一直點下去 抓包看看 這看起來是一個 JWT(JSON Web Token)字符串。JWT 通常由三部分組成,通過點(.)分隔,分別是頭部(Header&…

twisted實現MMORPG 游戲數據庫操作封裝設計與實現

在設計 MMORPG(大規模多人在線角色扮演游戲)時,數據庫系統是游戲架構中至關重要的一部分。數據庫不僅承擔了游戲中各種數據(如玩家數據、物品數據、游戲世界狀態等)的存儲和管理任務,還必須高效地支持并發訪…

【R語言】聚類分析

聚類分析是一種常用的無監督學習方法,是將所觀測的事物或者指標進行分類的一種統計分析方法,其目的是通過辨認在某些特征上相似的事物,并將它們分成各種類別。R語言提供了多種聚類分析的方法和包。 方法優點缺點適用場景K-means計算效率高需…

超全Deepseek資料包,deepseek下載安裝部署提示詞及本地部署指南介紹

該資料包涵蓋了DeepSeek模型的下載、安裝、部署以及本地運行的詳細指南,適合希望在本地環境中高效運行DeepSeek模型的用戶。資料包不僅包括基礎的安裝步驟,還提供了68G多套獨立部署視頻教程教程,針對不同硬件配置的模型選擇建議,以…

Java Spring boot 篇:常用注解

Configuration 作用 Configuration 注解的核心作用是把一個類標記為 Spring 應用上下文里的配置類。配置類就像一個 Java 版的 XML 配置文件,能夠在其中定義 Bean 定義和 Bean 之間的依賴關系。當 Spring 容器啟動時,會掃描這些配置類,解析其…

在 Ubuntu 20.04 為 Clash Verge AppImage 創建桌面圖標教程

在 Ubuntu 20.04 為 AppImage 創建桌面圖標教程 一、準備工作 確保你已經下載了 xxxx.AppImage 文件,并且知道它所在的具體路徑。同時,你可以準備一個合適的圖標文件(.png 格式)用于代表該應用程序,如果沒有合適的圖…

【復現DeepSeek-R1之Open R1實戰】系列6:GRPO源碼逐行深度解析(上)

目錄 4 GRPO源碼分析4.1 數據類 GRPOScriptArguments4.2 系統提示字符串 SYSTEM_PROMPT4.3 獎勵函數4.3.1 accuracy_reward函數4.3.2 verify函數4.3.3 format_reward函數 4.4 將數據集格式化為對話形式4.5 初始化GRPO Trainer 【復現DeepSeek-R1之Open R1實戰】系列3&#xff1…

【雜談】加油!!!!

為了在三月底前系統準備Java后端開發的面試和筆試,以下是分階段的高效學習計劃: 一、知識體系構建(第1-2周) 核心基礎強化 Java基礎(每日1.5小時): 重點掌握:JVM內存模型&#xff0…