LeetCode 分類刷題:2302. 統計得分小于 K 的子數組數目

題目

一個數組的?分數?定義為數組之和?乘以?數組的長度。

  • 比方說,[1, 2, 3, 4, 5]?的分數為?(1 + 2 + 3 + 4 + 5) * 5 = 75?。

給你一個正整數數組?nums?和一個整數?k?,請你返回?nums?中分數?嚴格小于?k?的?非空整數子數組數目

子數組?是數組中的一個連續元素序列。

示例 1:

輸入:nums = [2,1,4,3,5], k = 10
輸出:6
解釋:
有 6 個子數組的分數小于 10 :
- [2] 分數為 2 * 1 = 2 。
- [1] 分數為 1 * 1 = 1 。
- [4] 分數為 4 * 1 = 4 。
- [3] 分數為 3 * 1 = 3 。 
- [5] 分數為 5 * 1 = 5 。
- [2,1] 分數為 (2 + 1) * 2 = 6 。
注意,子數組 [1,4] 和 [4,3,5] 不符合要求,因為它們的分數分別為 10 和 36,但我們要求子數組的分數嚴格小于 10 。

示例 2:

輸入:nums = [1,1,1], k = 5
輸出:5
解釋:
除了 [1,1,1] 以外每個子數組分數都小于 5 。
[1,1,1] 分數為 (1 + 1 + 1) * 3 = 9 ,大于 5 。
所以總共有 5 個子數組得分小于 5 。

解析

滑動窗口使用前提:

  • 連續子數組/子串。
  • 有單調性。本題元素均為正數,所以子數組越長,分數越高;子數組越短,分數越低。這意味著只要某個子數組的分數小于 k,在該子數組內的更短的子數組,分數也小于 k。

做法:

  1. 枚舉子數組的右端點 right,同時維護窗口內的元素和 sum 以及窗口左端點 left。窗口的分數為 sum?(right?left+1)。
  2. 元素 x=nums[i] 進入窗口,把 sum 增加 x。
  3. 如果窗口的分數 ≥k,那么把左端點元素 nums[left] 移出窗口,同時減少 sum,把 left 加一。
  4. 內層循環結束后,[left,right] 這個子數組是合法的。根據上面的使用前提 2,在這個子數組內部的子數組也是合法的,其中右端點小于 right 的子數組,我們在之前的循環中已經統計過了,這里只需要統計右端點恰好等于 right 的合法子數組,即[left,right],[left+1,right],…,[right,right]這一共有 right?left+1 個,加入答案。

作者:靈茶山艾府
鏈接:https://leetcode.cn/problems/count-subarrays-with-score-less-than-k/solutions/1595722/by-endlesscheng-b120/
來源:力扣(LeetCode)

答案

/*** @param {number[]} nums* @param {number} k* @return {number}*/
var countSubarrays = function(nums, k) {let left = 0, ans = 0, sum = 0;    //初始化左指針,子數組個數和子數組的得分for(let right = 0; right < nums.length; right++) {    //移動右指針,擴大窗口sum += nums[right];    //更新子數組的和while(sum * (right - left + 1) >= k) {    //如果得分大于等于ksum -= nums[left];    //計算減去左端點后的子數組和left++;    //移動左指針,縮小窗口}ans += right - left + 1;    //更新符合條件的子數組個數}return ans;
};

復雜度分析

時間復雜度:O(n),其中 n 是 nums 的長度。雖然寫了個二重循環,但是內層循環中對 left 加一的總執行次數不會超過 n 次,所以總的時間復雜度為 O(n)。
空間復雜度:O(1)。

作者:靈茶山艾府
鏈接:https://leetcode.cn/problems/count-subarrays-with-score-less-than-k/solutions/1595722/by-endlesscheng-b120/
來源:力扣(LeetCode)

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

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

相關文章

TDengine IDMP 基本功能(1.界面布局和操作)

UI 布局和操作說明 TDengine IDMP 的用戶界面&#xff08;UI&#xff09;設計旨在提供直觀、易用的操作體驗。下面介紹 UI 的主要區域和典型操作&#xff1a; 主要區域 IDMP 的用戶界面是完全基于瀏覽器的。登錄后的典型 UI 界面具有幾個區域&#xff1a; 主菜單&#xff1a;AI…

QT(概述、基礎函數、界面類、信號和槽)

一、概述1、QTQT是一個c的第三方庫&#xff0c;是專門用來進行界面編程的一個庫 1. QT本身實現了多種軟件&#xff1a; 2. ubuntu系統中所有界面都是QT做的 3. 最新版本的QQ也是QT做的 4. 嵌入式編程中&#xff0c;幾乎所有的上位機&#xff0c;都可以使用QT來做 QT本身除了實現…

【從零開始java學習|第六篇】運算符的使用與注意事項

目錄 一、算術運算符 1. 基本算術運算符&#xff08;二元&#xff09; 2. 自增 / 自減運算符&#xff08;一元&#xff09; 二、類型轉換&#xff08;隱式與強制&#xff09; 1. 隱式轉換&#xff08;自動類型轉換&#xff09; ?編輯 2. 強制轉換&#xff08;顯式類型轉…

shellgpt

一、介紹 官網&#xff1a;https://github.com/TheR1D/shell_gpt ShellGPT&#xff08;shell_gpt&#xff09; 是一款把 GPT 系列大模型能力直接搬到終端 的開源命令行生產力工具。用日常英語或中文描述需求&#xff0c;就能幫你 生成、解釋甚至自動執行 Shell 命令&#xff…

geoserver sql視圖調用Postgis自定義函數問題記錄

一、問題描述&#xff1a;geoserver sql視圖調用Postgis自定義函數對點圖層增加一條記錄時&#xff0c;返回結果主鍵自增ID加了2&#xff0c;但表中數據只增加一條記錄。 但在pgAdmin中直接寫SQL調用Postgis自定義函數對點圖層增加一條記錄時&#xff0c;返回結果主鍵自增ID只加…

#T1224. 最大子矩陣

題目傳送 題目描述 已知矩陣的大小定義為矩陣中所有元素的和。給定一個矩陣&#xff0c;你的任務是找到最大的非空(大小至少是11)子矩陣。 比如&#xff0c;如下44的矩陣 0 -2 -7 09 2 -6 2 -4 1 -4 1-1 8 0 -2的最大子矩陣是 9 2-4 1-1 8這…

2025年大模型安全崗的面試匯總(題目+回答)

安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 1. Transformer核心機制及其對LLM突破的基石作用 2. LLM能力邊界評估框架設計 3. 模型層級安全風險分析 …

《關于省級政務云服務費支出預算標準的規定》豫財預〔2024〕106號解讀

《關于省級政務云服務費支出預算標準的規定》豫財預〔2024〕106號文件由河南省財政廳編制經省政府同意后于2024年12月3日印發執行&#xff0c;規定作為省級政務云服務費支出預算編制和審核的依據&#xff0c;旨在加強省級部門預算管理&#xff0c;規范政務云服務費支出預算編制…

使用HalconDotNet實現異步多相機采集與實時處理

文章目錄 一、核心功能與原理 功能目標: 工作原理: 關鍵機制: 二、完整C#實現代碼 三、關鍵實現解析 1. 零拷貝圖像傳輸 2. 動態幀率控制 3. HALCON并行優化 4. 異常隔離機制 四、高級優化策略 1. 硬件加速配置 2. 內存池管理 3. 實時性保障 一、核心功能與原理 功能目標:…

《瘋狂Java講義(第3版)》學習筆記ch4

ch4流程控制與數組1.switch語句后的expression表達式的數據類型只能是byte、short、char、int四種證書類型。2.建議不要在循環體內修改循環變量&#xff08;也叫循環計數器&#xff09;的值&#xff0c;否則會增加程序出錯的可能性。3.定義數組推薦語法格式&#xff1a;type[] …

COLMAP進行密集重建,三維重建的步驟

密集重建是在稀疏重建的基礎上進行的 稀疏重建見&#xff1a;用 COLMAP GUI 在 Windows 下一步步完成 相機位姿估計&#xff08;SfM&#xff09; 和 稀疏點云重建的詳細步驟&#xff1a;_colmap database導入圖片位姿-CSDN博客 完成稀疏重建后直接進入以下步驟進行密集重建&am…

基于飛算JavaAI實現Reactor模式服務器的深度實踐

一、飛算JavaAI技術概述 1.1 飛算JavaAI平臺簡介飛算JavaAI是飛算科技推出的智能化Java開發平臺&#xff0c;通過AI技術賦能傳統軟件開發流程&#xff0c;為開發者提供從需求分析到代碼實現的全流程智能化解決方案。該平臺深度融合了人工智能技術與軟件開發實踐&#xff0c;具備…

量子人工智能

量子人工智能&#xff08;QAI&#xff09;是量子計算與人工智能的強大融合。這一領域旨在將量子系統獨特的計算能力與人工智能的模式識別和學習能力相結合&#xff0c;以更快、更高效地解決問題。 量子人工智能與常規人工智能的區別是什么&#xff1f;常規人工智能在經典計算機…

算法題Day1

1. 練習1&#xff1a;Hello,World!解題步驟:using namespace std; int main() {cout<<"Hello,World!"<<endl;return 0; }2. 練習2&#xff1a;打印飛機解題步驟:#include <iostream> using namespace std; int main() {cout << " …

Cypher注入詳解:原理、類型與測試方法

Cypher&#xff0c;全稱為 (Open) Cypher Query Language&#xff0c;是一種專為圖數據庫設計的聲明式查詢語言。它以直觀的模式匹配方式&#xff0c;幫助開發者和數據分析師從復雜的圖結構數據中檢索、創建和修改信息。如果說 SQL 是關系型數據庫的語言&#xff0c;那么 Cyphe…

PG靶機 - Pelican

一、 初步偵察與服務探測 1.1 端口掃描與服務識別 首先&#xff0c;對目標主機 192.168.163.98 進行全面的端口掃描&#xff0c;以識別所有開放的服務。 sudo nmap 192.168.163.98 -p- --min-rate5000 -A圖 1: Nmap 掃描結果&#xff0c;顯示多個開放端口 掃描結果表明&#xf…

【1】Transformers快速入門:自然語言處理(NLP)是啥?

第一章&#xff1a;自然語言處理&#xff08;NLP&#xff09;是啥&#xff1f;一句話解釋&#xff1a; NLP 教電腦聽懂人話、說人話的技術 &#xff08;比如讓手機聽懂你說話、讓翻譯軟件變聰明&#xff09;NLP發展史&#xff1a;電腦學人話的 “翻車史” 第一階段&#xff08…

微軟發布五大AI Agent設計模式 推動企業自動化革新

今日&#xff0c;微軟在官網正式公布了企業級AI智能體&#xff08;Agent&#xff09;的五大核心設計模式&#xff0c;旨在通過模塊化架構與自適應能力&#xff0c;幫助企業構建具備推理、協作與自主進化能力的"數字員工團隊"。這一技術框架突破傳統RPA&#xff08;機…

如何根據本地是有GPU安裝對應CUDA版本的PyTorch

要在本地安裝與您的NVIDIA GPU匹配的CUDA版本PyTorch&#xff0c;請按以下步驟操作&#xff1a; 步驟1&#xff1a;確定GPU型號和驅動信息 1.按 Win X選擇 ?設備管理器?2.展開 ?顯示適配器? → 記錄您的NVIDIA顯卡型號&#xff08;如RTX 3060&#xff09;3.打開命令提示…

在FP32輸入上計算前向傳播需要多長時間?FP16模型的實例與之前的模型相比,它快了多少?

下面的 MixedModel 類使用作為參數提供的數據類型創建了一個非常簡單的兩層模型: class MixedModel(nn.Module): def init (self, dtype): super(). init