Leetcode 327. 區間和的個數

1.題目基本信息

1.1.題目描述

給你一個整數數組 nums 以及兩個整數 lower 和 upper 。求數組中,值位于范圍 [lower, upper] (包含 lower 和 upper)之內的 區間和的個數 。

區間和 S(i, j) 表示在 nums 中,位置從 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。

1.2.題目地址

https://leetcode.cn/problems/count-of-range-sum/description/

2.解題方法

2.1.解題思路

歸并排序。求nums的前綴和數組,并對前綴和數組使用歸并排序算法進行排序,在排序過程的歸并之前,使用雙指針算出rarr[j]-larr[i]在[lower,upper]區間的(i,j)的組合對數,并使用全局變量進行統計總對數,即為題解

3.解題代碼

python代碼

class Solution:def countRangeSum(self, nums: List[int], lower: int, upper: int) -> int:# 思路1:歸并排序。求nums的前綴和數組,并對前綴和數組使用歸并排序算法進行排序,在排序過程的歸并之前,使用雙指針算出rarr[j]-larr[i]在[lower,upper]區間的(i,j)的組合對數,并使用全局變量進行統計總對數,即為題解n = len(nums)preSums = [0] * (n + 1)for i in range(n):preSums[i + 1] = preSums[i] + nums[i]self.lower = lowerself.upper = upperself.result = 0self.mergeSort(preSums, 0, n)# print(preSums)# print(self.result)return self.resultdef mergeSort(self, nums:list[int], left:int, right:int):# 第一步,遞歸將左右兩側進行排序if left >= right:return mid = (right - left) // 2 + leftself.mergeSort(nums, left, mid)self.mergeSort(nums, mid + 1, right)larr = nums[left:mid + 1]rarr = nums[mid + 1:right + 1]# 第二步,找到larr和rarr能夠構成的合法情況的對數i, j1, j2 = 0, 0, 0while i < mid + 1 - left:while j1 < right - mid and rarr[j1] < larr[i] + self.lower:j1 += 1while j2 < right - mid and rarr[j2] <= larr[i] + self.upper:j2 += 1self.result += j2 - j1i += 1# 第三步,merge已經排序的部分i, j, k = 0, 0, leftwhile i < mid + 1 - left and j < right - mid:if larr[i] < rarr[j]:nums[k] = larr[i]i += 1k += 1else:nums[k] = rarr[j]j += 1k += 1while i < mid + 1 - left:nums[k] = larr[i]i += 1k += 1while j < right - mid:nums[k] = rarr[j]j += 1k += 1

4.執行結果

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

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

相關文章

MinIO 版本管理實踐指南(附完整 Go 示例)

? 前言 在構建企業級對象存儲系統時,“對象的版本管理”是一個關鍵特性。MinIO 作為一款高性能、Kubernetes 原生的 S3 兼容對象存儲系統,也支持強大的版本控制功能。 本文將通過 Go 示例代碼 + 實操講解 的形式,手把手帶你掌握 MinIO 的版本控制能力,包括開啟版本控制、…

數組toString方法及類型檢測修復方案

在 JavaScript 中&#xff0c;數組的 toString() 方法被覆蓋&#xff08;重寫&#xff09;為返回數組元素的逗號分隔字符串&#xff0c;而不是原始的 [object Array] 類型標識。以下是詳細解釋和修復方案&#xff1a;問題原因Array.prototype.toString 被覆蓋數組繼承自 Object…

mysql索引底層B+樹

B樹勝出的關鍵特性&#xff1a;矮胖樹結構&#xff1a;3-4層高度即可存儲2000萬條記錄&#xff08;假設每頁存1000條&#xff09; 葉子鏈表&#xff1a;所有數據存儲在葉子節點&#xff0c;并通過雙向鏈表連接 非葉導航&#xff1a;非葉子節點僅存儲鍵值&#xff0c;不保存數據…

AI開放課堂:釘釘MCP開發實戰

我們正處在AI技術爆發的時代&#xff0c;也處于企業數字化蓬勃發展的時代。如何利用AI技術&#xff0c;突破模型自身知識的局限&#xff0c;安全、高效地與外部世界連接和交互&#xff0c;是當前所有AI開發者在企業數字化中面臨的問題之一。 MCP&#xff08;Model Context Prot…

DigitalOcean 一鍵模型部署,新增支持百度開源大模型ERNIE 4.5 21B

使用過DigitalOcean GPU Droplet 服務器的用戶應該對我們的一鍵模型部署功能不陌生。DigitalOcean 的一鍵模型部署 (1-Click Models) 功能是 DO 為開發者和企業提供的一種便捷方式&#xff0c;用于快速部署和運行預訓練的生成式 AI 模型&#xff0c;尤其是大型語言模型 (LLM)。…

【嵌入式面試】嵌入式筆試與面試寶典(offer必來)

&#x1f48c; 所屬專欄&#xff1a;【嵌入式面試】 &#x1f600; 作??者&#xff1a;蘭舟比特 &#x1f43e; &#x1f680; 個人簡介&#xff1a;熱愛開源系統與嵌入式技術&#xff0c;專注 Linux、網絡通信、編程技巧、面試總結與軟件工具分享&#xff0c;持續輸出實用干…

企業級數據分析創新實戰:基于表格交互與智能分析的雙引擎架構

引言&#xff1a;數字化轉型中數據協同困境與系統融合挑戰 在數字化轉型實踐中&#xff0c;企業普遍面臨數據系統與業務運營的協同困境&#xff0c;主要表現為數據處理平臺與核心業務流程的架構隔離、分析成果與決策閉環的價值斷層、以及雙重數據維護帶來的資源損耗。這種系統…

openbmc 日志系統繼續分析

1.說明 1.1 總體說明 本節是繼: https://blog.csdn.net/wit_yuan/article/details/147142407?spm=1011.2415.3001.5331 后的繼續分析的文檔。 該篇內容主要目的是分析整個openbmc的日志系統。 注意解讀文檔: https://github.com/openbmc/docs/blob/master/designs/event-l…

【JIRA小白如何使用它進行bug管理】

JIRA小白如何使用它進行bug管理 提示&#xff1a;入職一般來說&#xff0c;公司會提供賬號&#xff0c;不需要部署如何提bug&#xff1a; JIRA有兩種提交方式 在執行測試用例中在bug管理項目中新建提bug建議或者注意事項&#xff1a; 標題&#xff1a;執行完A之后&#xff0c;發…

陪診小程序系統開發:開啟醫療陪護新時代

在快節奏的現代生活中&#xff0c;人們面臨著各種各樣的壓力&#xff0c;健康問題也日益凸顯。當生病就醫時&#xff0c;尤其是對于老年人、孕婦、殘障人士等特殊群體&#xff0c;獨自前往醫院往往會遇到諸多困難&#xff0c;如不熟悉醫院流程、行動不便、心理上感到孤獨無助等…

Leetcode—1035. 不相交的線【中等】

2025每日刷題&#xff08;214&#xff09; Leetcode—1035. 不相交的線最長公共子序列長度&#xff08;Longest Common Subsequence&#xff0c;LCS&#xff09; 給定兩個序列&#xff08;如字符串或數組&#xff09;&#xff0c;最長公共子序列&#xff08;LCS&#xff09;是同…

使用 Conda 工具鏈創建 UV 本地虛擬環境全記錄——基于《Python 多版本與開發環境治理架構設計》

Python 多版本環境治理理念驅動的系統架構設計&#xff1a;三維治理、四級隔離、五項自治 原則-CSDN博客 Python 多版本與開發環境治理架構設計-CSDN博客 【終極實戰】Conda/Poetry/Virtualenv/Pipenv/Hatch 多工具協同 AnacondaPyCharm&#xff1a;構建 Python 全版本棧隔離…

一文通透mamba2「力證Transformer are SSM」:從SSM、半可分矩陣、SMA、SSD到mamba2

前言 實話說&#xff0c;過去一兩月一直忙著我司兩大類項目的推進 一類是正在逐一上線基于大模型的論文翻譯、論文審稿、論文對話、論文修訂/潤色、論文idea提煉等等(截止到24年8月底&#xff0c;其中的審稿和翻譯已上線七月官網 )一類是正在抓緊做面向一個個工廠的具身智能機…

【Java基礎06】ArrayList

文章目錄1.ArrayList1.1 集合的基本使用1.2 集合的創建和成員方法1.3 練習一&#xff1a;集合的遍歷基本數據類型對應的包裝類1.4 練習二&#xff1a;使用集合存儲并遍歷學生對象1.4 練習三&#xff1a;添加用戶對象并判斷是否存在寫方法要思考的步驟1.5 練習四&#xff1a;添加…

ddos 放在多個云主機,同時運行

1. 起因&#xff0c; 目的: 我打開 grok, 被 cloudflare 攔截&#xff0c;問我是不是機器人。 這個情況&#xff0c;如果是別的小網站也就算了&#xff0c;很正常。 大公司也搞這種東西&#xff0c;要么是偷懶&#xff0c;要么是太小氣了。 一氣之下&#xff0c;我決定寫個 ddo…

lspci/setpci用法小結

目錄 1.lspci用法小結 2.lspci -t 3.setpci用法小結 1.lspci用法小結 參考博客&#xff1a;【PCIe】lspci用法小結 - 知乎 lspci是一個用來顯示系統中所有PCI總線設備或者連接到該總線上所有設備的工具 man lspci lspci(8) …

光通信從入門到精通:PDH→DWDM→OTN 的超詳細演進筆記

光通信從入門到精通&#xff1a;PDH→DWDM→OTN 的超詳細演進筆記 作者&#xff1a; 脫脫克克 日期&#xff1a;2025-07-24 關鍵詞&#xff1a;DWDM、OTN、G.709、光纖、帶寬、C-band、L-band、DSP、ROADM 摘要 本文用一條“高速公路”的比喻&#xff0c;把 40 年光傳輸技術演進…

安全初級——網頁

網頁代碼<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用戶登錄</title><script src&…

JVM原理及其機制(二)

目錄 一 . 垃圾回收機制&#xff08;GC&#xff09; 二 . 垃圾回收的具體步驟 &#xff08;1&#xff09;先找出誰是垃圾 方案一&#xff1a;引用計數 方案二&#xff1a;可達性分析 &#xff08;2&#xff09;釋放垃圾的內存空間 方案一&#xff1a;標記清除 方案二…

Solo:基于 zkHE 的身份驗證協議,構建 Web3 可信匿名身份層

“Solo 正在基于其獨創的 zkHE 架構&#xff0c;構建一套“可信匿名”的鏈上身份系統&#xff0c;有望打破長期困擾 Web3 的“不可能三角”&#xff0c;即在隱私保護、身份唯一性與去中心化可驗證性之間實現兼得。”前不久&#xff0c;Web3 身份層項目 Solo 宣布完成 120 萬美元…