LeetCode 2302.統計得分小于 K 的子數組數目:滑動窗口(不需要前綴和)

【LetMeFly】2302.統計得分小于 K 的子數組數目:滑動窗口(不需要前綴和)

力扣題目鏈接:https://leetcode.cn/problems/count-subarrays-with-score-less-than-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 。

?

提示:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 105
  • 1 <= k <= 1015

解題方法:滑動窗口

本題計算的是字數組和乘以數組長度,由于數組元素為正,所以數組中元素越多計算得到的值越大,具有單調性,可以使用滑動窗口。

使用 c n t cnt cnt記錄窗口中元素總和,右指針依次遍歷數組中每個元素作為窗口終點(遍歷時將指向元素加入窗口)。

對于每個右指針的位置:

如果 c n t ? l e n ( s u b A r r a y ) ≥ k cnt*len(subArray)\geq k cnt?len(subArray)k,則不斷右移左指針。

左指針移動結束后所在位置就是第一個窗口“分數”小于“k”的位置,從左指針到右指針任一元素開始到右指針所指元素結束的子數組“分數”都小于“k”,都是合法子數組。總個數為 r ? l + 1 r-l+1 r?l+1,累加到答案中即可。

  • 時間復雜度 O ( l e n ( n u m s ) ) O(len(nums)) O(len(nums))
  • 空間復雜度 O ( 1 ) O(1) O(1)

AC代碼

C++
/** @Author: LetMeFly* @Date: 2025-04-30 10:29:37* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-04-30 10:34:24*/
typedef long long ll;class Solution {
public:long long countSubarrays(vector<int>& nums, long long k) {ll ans = 0, cnt = 0;for (int l = 0, r = 0; r < nums.size(); r++) {cnt += nums[r];while (cnt * (r - l + 1) >= k) {cnt -= nums[l++];}ans += (r - l + 1);}return ans;}
};
Python
'''
Author: LetMeFly
Date: 2025-04-29 23:46:38
LastEditors: LetMeFly.xyz
LastEditTime: 2025-04-30 10:39:13
'''
from typing import Listclass Solution:def countSubarrays(self, nums: List[int], k: int) -> int:ans = cnt = l = 0for r in range(len(nums)):cnt += nums[r]while cnt * (r - l + 1) >= k:cnt -= nums[l]l += 1ans += (r - l + 1)return ans
Java
/** @Author: LetMeFly* @Date: 2025-04-29 23:46:43* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-04-30 10:41:19*/
class Solution {public long countSubarrays(int[] nums, long k) {long ans = 0, cnt = 0;for (int l = 0, r = 0; r < nums.length; r++) {cnt += nums[r];while (cnt * (r - l + 1) >= k) {cnt -= nums[l++];}ans += (r - l + 1);}return ans;}
}
Go
/** @Author: LetMeFly* @Date: 2025-04-29 23:46:45* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-04-30 10:55:53*/
package mainfunc countSubarrays(nums []int, k int64) (ans int64) {cnt := int64(0)l := 0for r, t := range nums {cnt += int64(t)for cnt * int64(r - l + 1) >= k {cnt -= int64(nums[l])l++}ans += int64(r - l + 1)}return
}

同步發文于CSDN和我的個人博客,原創不易,轉載經作者同意后請附上原文鏈接哦~

千篇源碼題解已開源

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

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

相關文章

kafka學習筆記(四、生產者(客戶端)深入研究(二)——消費者協調器與_consumer_offsets剖析)

1.消費者協調器和組協調器 如果消費者客戶端中配置了多個分配策略&#xff0c;則多消費者的分區分配交由消費者協調器和組協調器來完成&#xff0c;他們之間使用一套組協調協議進行交互。 1.1.在均衡原理 將全部消費者分成多個子集&#xff0c;每個消費者組的子集在服務中對…

快速將FastAPI接口轉為模型上下文協議(MCP)!

fastapi_mcp 是一個用于將 FastAPI 端點暴露為模型上下文協議&#xff08;Model Context Protocol, MCP&#xff09;工具的庫&#xff0c;并且支持認證功能。 環境macbook&#xff0c;python3.13 pip install fastapi uvicorn fastapi-mcp 代碼 from fastapi import FastAPI, …

實驗數據的轉換

最近做實驗需要把x軸y軸z軸的數據處理一下&#xff0c;總結一下解決的方法&#xff1a; 源文件為兩個txt文檔&#xff0c;分別為x軸和y軸&#xff0c;如下&#xff1a; 最終需要達到的效果是如下&#xff1a; 就是需要把各個矩陣的數據整理好放在同一個txt文檔里。 步驟① …

第Y3周:yolov5s.yaml文件解讀

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 本次任務&#xff1a;將yolov5s網絡模型中的第4層的C3x2修改為C3x1&#xff0c;第6層的C3x3修改為C3x2。 首先輸出原來的網絡結構&#xff1a; from n pa…

Ansible安裝配置

一、前提 服務器操作系統均為centos7.9 主機ipmaster(Ansible管理端)172.25.192.2node1172.25.192.10node2172.25.192.3 更新/etc/hosts文件 二、安裝 master節點&#xff1a; 1. 安裝epel源 yum install -y epel-release 2. 安裝Ansible yum install -y ansible A…

MySQL中ROW_NUMBER() OVER的用法以及使用場景

使用語法 ROW_NUMBER() OVER ([PARTITION BY partition_column1, partition_column2, ...]ORDER BY sort_column1 [ASC|DESC], sort_column2 [ASC|DESC], ... )PARTITION BY&#xff1a;將數據按指定列分組&#xff0c;每組內單獨生成行號。ORDER BY&#xff1a;決定組內行號的…

【人工智能】釋放本地AI潛能:LM Studio用戶腳本自動化DeepSeek的實戰指南

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 隨著大型語言模型(LLM)的快速發展,DeepSeek以其高效的性能和開源特性成為開發者關注的焦點。LM Studio作為一款強大的本地AI模型管理工具…

筆試強訓:Day3

一、牛牛沖鉆五&#xff08;模擬&#xff09; 登錄—專業IT筆試面試備考平臺_牛客網 #include<iostream> using namespace std; int main(){int t,n,k;string s;cin>>t;while(t--){cin>>n>>k>>s;int ret0;//統計加了多少星for(int i0;i<n;i)…

語音識別質量的跟蹤

背景 這個項目是用來生成結構化的電子病歷的。數據的來源是醫生的錄音。中間有一大堆的處理&#xff0c;語音識別&#xff0c;關鍵字匹配&#xff0c;結構化處理&#xff0c;病歷編輯......。最多的時候給上百家醫院服務。 語音識別質量的跟蹤 一、0225醫院的訓練后的情況分…

人工智能搜索時代的SEO:關鍵趨勢與優化策略

隨著人工智能&#xff08;AI&#xff09;技術的飛速發展&#xff0c;搜索引擎的運作方式正在經歷前所未有的變革。2025年&#xff0c;AI驅動的搜索&#xff08;如谷歌的AI概覽、ChatGPT搜索和必應的AI增強功能&#xff09;不僅改變了用戶獲取信息的方式&#xff0c;還為SEO從業…

Node.js心得筆記

npm init 可用npm 來調試node項目 瀏覽器中的頂級對象時window <ref *1> Object [global] { global: [Circular *1], clearImmediate: [Function: clearImmediate], setImmediate: [Function: setImmediate] { [Symbol(nodejs.util.promisify.custom)]: [Getter] }, cl…

計算機網絡01-網站數據傳輸過程

局域網&#xff1a; 覆蓋范圍小&#xff0c;自己花錢買設備&#xff0c;寬帶固定&#xff0c;自己維護&#xff0c;&#xff0c;一般長度不超過100米&#xff0c;&#xff0c;&#xff0c;帶寬也比較固定&#xff0c;&#xff0c;&#xff0c;10M&#xff0c;&#xff0c;&…

Mysql常用函數解析

字符串函數 CONCAT(str1, str2, …) 將多個字符串連接成一個字符串。 SELECT CONCAT(Hello, , World); -- 輸出: Hello World??SUBSTRING(str, start, length) 截取字符串的子串&#xff08;起始位置從1開始&#xff09;。 SELECT SUBSTRING(MySQL, 3, 2); -- 輸出: SQ…

SpringMVC 前后端數據交互 中文亂碼

ajax 前臺傳入數據&#xff0c;但是后臺接收到的數據中文亂碼 首先我們分析一下原因&#xff1a;我們調用接口的時候傳入的中文&#xff0c;是沒有亂碼的 此時我們看一下Java后臺接口對應的編碼&#xff1a; 默認情況&#xff1a;Servlet容器&#xff08;如Tomcat&#xff09;默…

loads、dumps、jsonpath使用場景

在處理JSON數據時&#xff0c;loads、dumps 和 jsonpath 是三個非常有用的工具或概念。它們各自在不同的場景下發揮作用&#xff0c;讓我們一一來看&#xff1a; 1. loads loads 函數是 Python 中 json 模塊的一部分&#xff0c;用于將 JSON 格式的字符串解析成 Python 的數據…

Java學習手冊:Spring 事務管理

一、事務管理的概念 事務是一組操作的集合&#xff0c;這些操作要么全部成功&#xff0c;要么全部失敗。事務管理的目的是保證數據的一致性和完整性。在數據庫操作中&#xff0c;事務管理尤為重要&#xff0c;例如銀行轉賬、訂單支付等場景都需要事務管理來確保數據的正確性。…

echarts自定義圖表--柱狀圖-橫向

區別于縱向表格 xAxis和yAxis對調 要將label全部固定到最右側&#xff1a; 隱藏一個柱形 為每個label設置固定的偏移距離 offset: [300 - 80, 0] 在data中加入label的配置 根據現在的值生成距離右側的偏移 更新方法 chart.setOption({series: [{},{data: data.map(v > ({v…

【CV數據集】Visdrone2019無人機目標檢測數據集(YOLO、VOC、COCO格式)

visdrone2019的Task1是非常通用的目標檢測數據集&#xff0c;也是許多人做目標檢測論文和項目必然會用到的數據集&#xff0c;我將該數據集進行了處理&#xff0c;將其YOLO、VOC和COCO格式都整理好&#xff0c;通過下載我整理好的數據集和相關文件&#xff0c;可以直接在自己的…

常見電源的解釋說明

英文縮寫 BJT&#xff08;bipolar junction transistor&#xff09;雙極型結晶體管FET&#xff08;field-effect transistor&#xff09;場效應管TTL&#xff08;Transistor-Transistor Logic&#xff09;三極管CMOS&#xff08;Complementary Metal Oxide Semiconductor&…

【2025年五一數學建模競賽】A題 解題思路與模型代碼

2025年五一數學建模競賽 A題 問題一&#xff1a;推測支路 1 和支路 2 的車流量 1.1 問題描述 根據提供的主路歷史數據以及已知的支路車流量變化趨勢&#xff08;支路1呈線性增長&#xff0c;支路2先線性增長后線性減少&#xff09;&#xff0c;推測這兩個支路在特定時間段&a…