每日算法刷題計劃Day7 5.15:leetcode滑動窗口4道題,用時1h

一.定長滑動窗口

【套路】教你解決定長滑窗!適用于所有定長滑窗題目!

模版套路

1.題目描述

1.計算所有長度恰好為?k?的子串中,最多可以包含多少個元音字母
2.找出平均數最大且?長度為?k?的連續子數組,并輸出該最大平均數。
3.返回長度為?k?且平均值大于等于?threshold?的子數組數目
4.構建并返回一個長度為?n?的數組?avgs?,其中?avgs[i]?是以下標?i?為中心的子數組的?半徑為 k 的子數組平均值?。(長度為2*k+1,更新位置為i-k)

2.套路
三步走:入窗口-更新答案-出窗口

  • 1.入窗口:下標為i的元素進入窗口,更新相關統計量。如果i<k-1,則說明第一個窗口還未出現,重復步驟1.
  • 2.更新答案,一般是更新最大值/最小值
  • 3.出窗口,下標為i-k+1的元素離開窗口,更新相關統計量
    c++:
class Solution {
public:int maxVowels(string s, int k) {int res = 0, cnt = 0;for (int i = 0; i < s.size(); ++i) {// 1.入窗口if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' ||s[i] == 'u') {// 更新統計量cnt++;}// 1. 第一個窗口未出現,重復步驟1if (i < k - 1) {continue;}// 2.更新答案res = max(res, cnt);// 3.出窗口if (s[i - k + 1] == 'a' || s[i - k + 1] == 'e' ||s[i - k + 1] == 'i' || s[i - k + 1] == 'o' ||s[i - k + 1] == 'u') {// 更新統計量cnt--;}}return res;}
};

python:

class Solution:def maxVowels(self, s: str, k: int) -> int:res, cnt = 0, 0for i in range(len(s)):# 1.入窗口if s[i] == "a" or s[i] == "e" or s[i] == "i" or s[i] == "o" or s[i] == "u":# 更新統計量cnt += 1# 1.第一個窗口未出現,重復步驟1if i < k - 1:continue# 2.更新答案res = max(res, cnt)# 3.出窗口if (s[i - k + 1] == "a"or s[i - k + 1] == "e"or s[i - k + 1] == "i"or s[i - k + 1] == "o"or s[i - k + 1] == "u"):# 更新統計量cnt -= 1return res
1. 1456.定長子串中元音的最大數目(中等)

1456. 定長子串中元音的最大數目 - 力扣(LeetCode)
同模版套路

2. 643.子數組最大平均數I(簡單)
思想

找出平均數最大且?長度為?k?的連續子數組,并輸出該最大平均數。
同套路

代碼

c++:

class Solution {
public:double findMaxAverage(vector<int>& nums, int k) {double res = -1e5;int sum = 0;for (int i = 0; i < nums.size(); ++i) {sum += nums[i];if (i < k - 1)continue;res = max(res, (double)sum / k);sum -= nums[i - k + 1];}return res;}
};

優化:
循環內只更新res為sum,最終返回結果除以k即可,因為是定長窗口

3. 1343.大小為K且平均值大于等于閾值的子數組數目(中等)

1343. 大小為 K 且平均值大于等于閾值的子數組數目 - 力扣(LeetCode)

思想

返回長度為?k?且平均值大于等于?threshold?的子數組數目。
同套路一樣

代碼

c++:

class Solution {
public:int numOfSubarrays(vector<int>& arr, int k, int threshold) {int res = 0, sum = 0;for (int i = 0; i < arr.size(); ++i) {sum += arr[i];if (i < k - 1)continue;if (sum >= k * threshold)res++;sum -= arr[i - k + 1];}return res;}
};
4. 2090.半徑為k的子數組平均值(中等)

2090. 半徑為 k 的子數組平均值 - 力扣(LeetCode)

思想

1.構建并返回一個長度為?n?的數組?avgs?,其中?avgs[i]?是以下標?i?為中心的子數組的?半徑為 k 的子數組平均值?。
2.注意:長度為2*k+1,更新位置為i-k

代碼

c++:

class Solution {
public:vector<int> getAverages(vector<int>& nums, int k) {int n = nums.size();vector<int> res(n);for (int i = 0; i < n; ++i)res[i] = -1;int len = 2 * k + 1; // 定義一個lenlong long sum = 0;for (int i = 0; i < n; ++i) {sum += (long long)nums[i];if (i < len - 1)continue;res[i - k] = (double)sum / len;sum -= (long long)nums[i - len + 1];}return res;}
};

注意:
sum記得開long long

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

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

相關文章

JavaScript的BOM、DOM編程

參考筆記&#xff1a;JavaWeb 速通DOM_java dom-CSDN博客 目錄 1.JS的組成部分 2.BOM編程 2.1 基本介紹 2.2 BOM的構成 2.3 圖解BOM編程 2.4 windows對象的常見屬性 2.5 windows對象的常見方法 2.6 BOM編程的簡單示例 2.6.1 三種彈窗方式 ?2.6.2 頁面跳轉 2.6.3…

Web3.0:互聯網的去中心化未來

隨著互聯網技術的不斷發展&#xff0c;我們正站在一個新時代的門檻上——Web3.0時代。Web3.0不僅僅是一個技術升級&#xff0c;它更是一種全新的互聯網理念&#xff0c;旨在通過去中心化技術重塑網絡世界。本文將深入探討Web3.0的核心概念、技術基礎、應用場景以及它對未來的深…

CVPR計算機視覺頂會論文解讀:IPC-Dehaze 如何解決真實場景去霧難題

【CVPR 2025】迭代預測-評判編解碼網絡&#xff1a;突破真實場景去霧的極限 摘要 本文提出了一種名為IPC-Dehaze的創新去霧方法&#xff0c;通過迭代預測-評判框架和碼本解碼機制&#xff0c;有效解決了現有去霧算法在復雜場景下的性能瓶頸。該方法在多個基準測試中取得了SOT…

07.three官方示例+編輯器+AI快速學習webgl_buffergeometry_attributes_integer

本實例主要講解內容 這個Three.js示例展示了WebGL 2環境下的整數屬性渲染技術。通過創建大量隨機分布的三角形&#xff0c;并為每個三角形分配不同的整數索引&#xff0c;實現了基于索引動態選擇紋理的效果。 核心技術包括&#xff1a; WebGL 2環境下的整數屬性支持頂點著色…

WebSocket:實時通信(如聊天應用)從零到一的深度解析

簡介 在現代互聯網應用中,實時通信已成為不可或缺的核心功能。從在線聊天到金融數據監控,從協同辦公到在線游戲,實時性需求推動了WebSocket技術的廣泛應用。本文將從底層協議原理出發,結合企業級開發場景,系統講解WebSocket的實現機制、實戰技巧與優化策略。通過完整的代…

【NLP 困惑度解析和python實現】

**困惑度&#xff08;Perplexity&#xff09;**是自然語言處理和機器學習中常用的評價指標&#xff0c;尤其在評估語言模型時廣泛使用。它衡量的是一個概率模型對一個樣本&#xff08;如一句話&#xff09;的預測能力。 一、困惑度的定義 對于一個語言模型 $ P $ 和一個測試語…

編程題 02-線性結構3 Reversing Linked List【PAT】

文章目錄 題目輸入格式輸出格式輸入樣例輸出樣例 題解解題思路完整代碼 編程練習題目集目錄 題目 Given a constant K K K and a singly linked list L L L, you are supposed to reverse the links of every K K K elements on L L L. For example, given L being 1 → …

互聯網大廠Java求職面試實戰:Spring Boot到微服務全景解析

&#x1f4aa;&#x1f3fb; 1. Python基礎專欄&#xff0c;基礎知識一網打盡&#xff0c;9.9元買不了吃虧&#xff0c;買不了上當。 Python從入門到精通 2. 我的免費工具站&#xff1a; 歡迎訪問 https://tools-6wi.pages.dev/ &#x1f601; 3. 畢業設計專欄&#xff0c;畢業…

課程11. 計算機視覺、自編碼器和生成對抗網絡 (GAN)

計算機視覺、自編碼器和生成對抗網絡&#xff08;GAN&#xff09; 自動編碼器Vanilla自動編碼器使用 AE 生成新對象. 變分 AE (VAE)AE 條件 GAN理論示例下載并準備數據GAN模型 額外知識 課程計劃&#xff1a; 自動編碼器&#xff1a; 自動編碼器結構&#xff1b;使用自動編碼器…

MarkitDown:AI時代的文檔轉換利器

在當今AI快速發展的時代,如何高效地將各種格式的文檔轉換為機器可讀的格式,成為了一個迫切需要解決的問題。今天,我們來介紹一款由微軟開發的強大工具——MarkitDown,它正是為解決這一問題而生的。 什么是MarkitDown? MarkitDown是一個用Python編寫的輕量級工具,專門用…

Python實戰案例:打造趣味猜拳小游戲

Python實戰案例&#xff1a;猜拳小游戲 文章目錄 Python實戰案例&#xff1a;猜拳小游戲一、案例背景二、代碼實現三、代碼解析3.1 執行過程3.2 流程圖 四、案例總結1. 核心知識點運用2. 編程思維提升 一、案例背景 猜拳游戲&#xff08;石頭剪刀布&#xff09;是一款規則簡單…

MCP:重塑AI交互的通用協議,成為智能應用的基礎設施

目錄: 為什么我們需要一個AI世界的USB-C?MCP的核心架構與工作原理MCP如何解決當前AI生態系統的碎片化問題從代碼到實踐:構建基于MCP的智能應用MCP的未來:從工具到生態為什么我們需要一個AI世界的USB-C? 還記得在USB-C標準普及之前,我們的數字生活是什么樣子嗎?抽屜里塞…

如何保證RabbitMQ消息的順序性?

保證RabbitMQ消息的順序性是一個常見的需求&#xff0c;尤其是在處理需要嚴格順序的消息時。然而&#xff0c;默認情況下&#xff0c;RabbitMQ不保證消息的全局順序&#xff0c;因為消息可能會通過不同的路徑&#xff08;例如不同的網絡連接或線程&#xff09;到達隊列&#xf…

HTML-2.2 列表--無序列表、有序列表、定義列表

本系列可作為前端學習系列的筆記&#xff0c;代碼的運行環境是在HBuilder中&#xff0c;小編會將代碼復制下來&#xff0c;大家復制下來就可以練習了&#xff0c;方便大家學習。小編作為新晉碼農一枚&#xff0c;會定期整理一些寫的比較好的代碼&#xff0c;作為自己的學習筆記…

Vuex和Vue的區別

Vue和Vuex有著不同的功能和定位&#xff0c;主要區別如下&#xff1a; 概念與功能 - Vue&#xff1a;是一個構建用戶界面的JavaScript框架&#xff0c;專注于視圖層的開發&#xff0c;采用組件化的方式構建應用程序&#xff0c;通過數據綁定和指令系統&#xff0c;能方便地…

數據可視化-----子圖的繪制及坐標軸的共享

目錄 繪制固定區域的子圖 &#xff08;一&#xff09;、繪制單子圖 subplot()函數 Jupyter Notebook的繪圖模式 &#xff08;二&#xff09;、多子圖 subplots()--可以在規劃好的所有區域中一次繪制多個子圖 &#xff08;三&#xff09;、跨行跨列 subplot2grid()---將整…

基于Qt6 + MuPDF在 Arm IMX6ULL運行的PDF瀏覽器——MuPDF Adapter文檔

項目地址&#xff1a;總項目Charliechen114514/CCIMXDesktop: This is a Qt Written Desktop with base GUI Utilities 本子項目地址&#xff1a;CCIMXDesktop/extern_app/pdfReader at main Charliechen114514/CCIMXDesktop 前言 這個部分說的是Mupdf_adaper下的文檔的工…

Linux 防火墻 firewalld 實戰配置教程!

最近工作上處理了很多關系配置服務器防火墻的操作&#xff0c;于是想寫一篇理論與實踐并存的文章&#xff0c;在這里分享給大家&#xff0c;希望對您有所幫助&#xff01; 主要包括以下幾部分內容&#xff1a; 防火墻概述 firewalld原理框架 與iptables的異同點 firewalld常…

C#發送文件到藍牙設備

測試環境&#xff1a; visual studio 2022 win11筆記本電腦&#xff0c;具有藍牙功能 .net6控制臺 測試步驟如下&#xff1a; 1 新增名為BluetoothDemo控制臺項目 2 通過nuget安裝InTheHand.Net.Bluetooth&#xff0c;版本選擇4.2.1和安裝InTheHand.Net.Obex&#xff0c;版…

初識 Pandas:Python 數據分析的利器

在數據分析、數據清洗和可視化等領域&#xff0c;Python 無疑是最受歡迎的語言之一&#xff0c;而在 Python 的數據處理生態中&#xff0c;Pandas 是最核心、最基礎的庫之一。如果你接觸數據分析、機器學習、金融建模&#xff0c;或者只是想處理一些 Excel 表格&#xff0c;那么…