LeetCode熱題100刷題4:76. 最小覆蓋子串、239. 滑動窗口最大值、53. 最大子數組和、56. 合并區間

76. 最小覆蓋子串

滑動窗口解決字串問題。

labuladong的算法小抄中關于滑動窗口的算法總結:

class Solution {
public:string minWindow(string s, string t) {unordered_map<char,int> need,window;for(char c : t) {need[c]++;}int left = 0, right = 0;int start = 0, len = INT_MAX;int valid=0;while(right < s.size()) {char c = s[right];right++;if(need.count(c)) {window[c]++;if(window[c] == need[c])valid++;}while(valid==need.size()) {if(right-left < len) {start = left;len = right-left;}char d = s[left];left++;if(need.count(d)) {if(window[d]==need[d])valid--;window[d]--;}}}return len==INT_MAX ? "" : s.substr(start,len);}
};

在這里插入圖片描述

239. 滑動窗口最大值

加粗樣式

class Solution {
public:class MyQueue{public:deque<int> que;void pop(int value) {if(!que.empty() && value==que.front()) {que.pop_front();}}void push(int value) {while(!que.empty() && value > que.back()) {que.pop_back();}que.push_back(value);}int front(){return que.front();}};vector<int> maxSlidingWindow(vector<int>& nums, int k) {MyQueue que;vector<int> result;for(int i=0;i<k;i++) {que.push(nums[i]);}result.push_back(que.front());for(int i=k;i<nums.size();i++) {que.pop(nums[i-k]);que.push(nums[i]);result.push_back(que.front());}return result;}
};

53. 最大子數組和

貪心做法:尋找局部最優的邏輯

class Solution {
public:int maxSubArray(vector<int>& nums) {if(nums.size()<=1)return nums[0];int sum = nums[0];int res = sum;for(int i=1;i<nums.size();i++) {sum = max(nums[i]+sum , nums[i]);if(sum > res)res = sum;}return res;}
};

56. 合并區間

按代碼隨想錄來說的話,劃分為貪心算法找局部最優的一類問題
今天剛復習了STL的vector底層原理,這個back()是已經實現好的函數,能夠獲取得數組未元素(的引用)

class Solution {
public:static bool cmp(vector<int>& a, vector<int>& b) {if(a[0]==b[0])return a[1]<b[1];elsereturn a[0] < b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {if(intervals.size() <=1)return intervals;sort(intervals.begin(),intervals.end(),cmp);vector<vector<int>> res;res.push_back(intervals[0]);for(int i=0;i<intervals.size();i++) {if(intervals[i][0] <= res.back()[1]) {res.back()[1] = max(intervals[i][1], res.back()[1]);}else {res.push_back(intervals[i]);}}return res;}
};

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

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

相關文章

2.8億東亞五國建筑數據分享

數據是GIS的血液&#xff01; 我們現在為你分享東亞5國的2.8億條建筑輪廓數據&#xff0c;該數據包括中國、日本、朝鮮、韓國和蒙古5個東亞國家完整、高質量的建筑物輪廓數據&#xff0c;你可以在文末查看領取方法。 數據介紹 雖然開源的全球的建筑數據已經有微軟的建筑數據…

elementUI中table組件固定列時會渲染兩次模板內容問題

今天在使用elementUI的table組件時&#xff0c;由于業務需要固定表格的前幾項列&#xff0c;然后獲取表格對象時發現竟然有兩個對象。 查閱資料發現&#xff0c;elementUI的固定列的實現原理是將兩個表格拼裝而成&#xff0c;因此獲取的對象也是兩個。對于需要使用對象的方法的…

vxe-table的序號一樣

使用vxe-table的時候&#xff0c;有的時候會出現序號相同的現象&#xff0c;這種現象一般出現在我們后面自己添加的行中&#xff0c;就像這種 此時的這三個序號是相同的&#xff0c;我來說一下原因&#xff0c;這是在添加新的一行的時候&#xff0c;有的時候數據很多&#xff0…

Mac 運行 Windows 軟件,Parallels Desktop 19和 CrossOver 24全面對比

Parallels Desktop 和 CrossOver 都是能滿足你「在 Mac 上運行 Windows 軟件」需求的工具。可能很多人都已經知道 Parallels Desktop 是「虛擬機」&#xff0c;但 CrossOver 其實并不是「虛擬機」。這兩款軟件有相同的作用&#xff0c;但由于實現原理的不同&#xff0c;兩者也有…

系統提示我未定義與 ‘double‘ 類型的輸入參數相對應的函數 ‘finverse‘,如何解決?

&#x1f3c6;本文收錄于「Bug調優」專欄&#xff0c;主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案&#xff0c;希望能夠助你一臂之力&#xff0c;幫你早日登頂實現財富自由&#x1f680;&#xff1b;同時&#xff0c;歡迎大家關注&&收藏&&…

Kubernetes 部署簡單的應用

Kubernetes 部署簡單的應用 Kubernetes 是一個強大的容器編排平臺&#xff0c;它可以幫助我們自動化應用程序的部署、擴展和管理。在本期文章中&#xff0c;我們將學習如何使用 Kubernetes 部署一個簡單的應用程序。 1. 環境準備 確保你已經安裝了 Kubernetes 集群&#xff…

【python模塊】argparse

文章目錄 argparse模塊介紹基本用法add_argument() argparse模塊介紹 argparse 模塊是 Python 標準庫中的一個用于編寫用戶友好的命令行接口&#xff08;CLI&#xff09;的模塊。它允許程序定義它所需要的命令行參數&#xff0c;然后 argparse 會自動從 sys.argv 解析出那些參…

TCP粘包解決方法

一. 產生原因及解決方法 產生原因&#xff1a;TCP是面向連接、基于字節流的協議&#xff0c;其無邊界標記。當服務端處理速度比不其接收速度時&#xff0c;就很容易產生粘包現象。 解決方法&#xff1a;目前主要有兩種解決方法&#xff0c;一個是在內容中添加分割標識&#xf…

人臉識別考勤系統

人臉識別考勤系統是一種利用生物識別技術進行自動身份驗證的現代解決方案&#xff0c;它通過分析和比對人臉特征來進行員工的出勤記錄。這種系統不僅提升了工作效率&#xff0c;還大大減少了人為錯誤和欺詐行為的可能性。 一、工作原理 人臉識別考勤系統的核心在于其生物識別…

深入剖析Python中的Pandas庫:通過實戰案例全方位解讀數據清洗與預處理藝術

引言 隨著大數據時代的到來&#xff0c;數據的質量直接影響到最終分析結果的可靠性和有效性。在這個背景下&#xff0c;Python憑借其靈活強大且易于上手的特點&#xff0c;在全球范圍內被廣泛應用于數據科學領域。而在Python的數據處理生態中&#xff0c;Pandas庫無疑是最耀眼…

高級策略:解讀 SQL 中的復雜連接

了解基本連接 在深入研究復雜連接之前&#xff0c;讓我們先回顧一下基本連接的基礎知識。 INNER JOIN&#xff1a;根據指定的連接條件檢索兩個表中具有匹配值的記錄。LEFT JOIN&#xff1a;從左表檢索所有記錄&#xff0c;并從右表中檢索匹配的記錄&#xff08;如果有&#x…

管道支架安裝

工程結構施工完畢后&#xff0c;系統管道安裝完畢后的第一步任務就是管道支架的制作安裝&#xff0c;作為對管道固定和承重作用至關重要的支、托、吊架&#xff0c;有些項目部在施工中卻往往因為對它們的重要性認識不足&#xff0c;因存在僥幸心里或經驗主義&#xff0c;導致支…

NIO為什么會導致CPU100%?

1. Java IO 類型概覽 BIO&#xff1a;阻塞I/O&#xff0c;每個連接一個線程&#xff0c;簡單但遇到高并發時性能瓶頸明顯。NIO&#xff1a;非阻塞I/O&#xff0c;JDK 1.4引入&#xff0c;一個線程處理多個IO操作&#xff0c;提高資源利用率和系統吞吐量。AIO&#xff1a;異步I…

技術探索:利用Python庫wxauto實現Windows微信客戶端的全面自動化管理

項目地址&#xff1a;github-wxauto 點擊即可訪問 項目官網&#xff1a;wxauto 點擊即可訪問 &#x1f602;什么是wxauto? wxauto 是作者在2020年開發的一個基于 UIAutomation 的開源 Python 微信自動化庫&#xff0c;最初只是一個簡單的腳本&#xff0c;只能獲取消息和發送…

kpatch Patch Author Guide

kpatch Patch Author Guide Because kpatch-build is relatively easy to use, it can be easy to assume that a successful patch module build means that the patch is safe to apply. But in fact that’s a very dangerous assumption. 由于 kpatch-build 比較容易使用…

精通Spring Cloud: Spring Cloud Config面試題詳解及參考答案(3萬字長文)

解釋Spring Cloud Config的基本功能和它在微服務架構中的作用 Spring Cloud Config是一個用于集中管理和外部化配置的工具。其核心功能在于允許開發者將配置從代碼中分離出來,放置于一個中央存儲庫中,從而簡化了配置管理,提高了應用程序的可維護性和靈活性。在微服務架構中…

論文的3個創新點方向

1、數據分析創新 通過對現有數據的分析&#xff0c;發現新的模式或趨勢&#xff0c;提出新的假設或理論的方法。隨著大數據和人工智能技術的發展&#xff0c;數據分析在科學研究中也有很多的創新。 可以通過實驗、調查、模擬、現場等方式收集相關數據。數據的質量和數量是數據…

掌握MySQL基礎命令:數據更新操作詳細操作(數據的增刪改)

MySQL數據修改是指使用SQL語句&#xff08;如UPDATE、INSERT、DELETE&#xff09;對數據庫表中的數據進行更改、添加或刪除的操作&#xff0c;常見的操作包括更新表中的記錄、插入新記錄以及刪除現有記錄 。 一、數據插入 1插入完整的數據記錄 2插入非完整的數據記錄 3插入多…

探討SpringMVC的工作原理

SpringMVC是Spring框架的一部分&#xff0c;是用于構建Web應用程序的一個模塊。SpringMVC遵循Model-View-Controller&#xff08;MVC&#xff09;設計模式&#xff0c;幫助開發者將應用程序的業務邏輯、控制邏輯和表示層分離。以下是SpringMVC的工作原理及其核心組件的詳細介紹…

Oracle數據庫導入導出詳解

在數據庫管理和維護過程中&#xff0c;數據的導入與導出是常見的需求&#xff0c;特別是在數據遷移、備份或數據分析等場景下尤為重要。Oracle數據庫作為企業級的數據庫管理系統&#xff0c;提供了強大的數據導入導出工具。本文將詳細介紹Oracle數據庫中數據導入和導出的常用方…