day02-數組part02

一、長度最小的子數組(滑動窗口)

leetcode 209 長度最小子數組

這道題的核心思想就是使用滑動窗口,滑動窗口三板斧:

  1. 初始位置i
  2. 滑動窗口長度j-i+1
  3. 結束位置j

我們在寫代碼時是通過for循環來控制結束位置j,而初始位置i是在滿足條件的情況下才向前移動的

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int i=0,j=0;//i是窗口起始位置,j是終止位置int result = INT32_MAX; //因為要找到最小的,如果初始成0,那0永遠是最小的int subLength = 0; //子數組長度int sum = 0;for(j=0;j<nums.size();j++){sum += nums[j]; //一直疊加到終止位置while(sum >= target){ //滿足條件后要判斷此時字串長度是否更小,同時移動起始位置isubLength = j-i+1;if(subLength < result) result = subLength;sum -= nums[i];//i指針移動,sum減去一個值i++;}}return result==INT32_MAX ? 0:result;}
};

二、模擬 - 螺旋矩陣Ⅱ

leetcode 59 螺旋矩陣

這道題目就是要模擬按照順時針畫矩陣的過程

  1. 填充上行從左到右
  2. 填充右列從上到右
  3. 填充下列從右到左
  4. 填充左列從下到上

同時需要注意的是每一行(列)的處理范圍要保持一致——左閉右開

我們首先要確定總共要繞多少圈(loop),接著就在每一圈內順時針填充行列,一定要注意邊界處理條件

class Solution {
public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> result(n,vector<int>(n,0));int loop = n/2; //所要走的圈數int startx = 0,starty = 0; //每一圈開始的起始位置int mid = n/2; //中間值(在n為奇數時需要特殊處理)int offset = 1; //用于處理每一圈的邊界int i,j;int count = 1;//向矩陣中填的數while(loop){i = startx;j = starty;//四個for循環模擬for(j;j<n-offset;j++){ //模擬上行從左到右result[i][j] =  count;count++;}for(i;i<n-offset;i++){//模擬右列從上到下result[i][j] = count++;}for(j;j>starty;j--){//模擬下行從右到左(注意邊界條件,同時這里循環變量剛好從上面結束的j開始)result[i][j] = count++;}for(i;i>startx;i--){//模擬左列從下到上result[i][j] = count++;}startx++;starty++;offset++; //表示邊界的結束位置要少一位(因為下一處繞的圈變小了)loop--;}//處理n是邊界的情況if(n%2 != 0){result[mid][mid] = count;}return result;}
};

三、一維前綴和

題目

前綴和用來求解區間之和,一維指的是求解的是一維數組的前綴和。

前綴和的核心思想就是設置了一個前綴和數組sum

sum數組初始化如下:

  • sum[0] = Array[0]
  • i>0,sum[i] = sum[i-1] + Array[i]

接下來就可以利用sum數組來求解數組區間[a,b]的和,利用下面的公式計算:

  • 當a = 0 時 , result = sum[b]
  • 當a>0時,result = sum[b] - sum[a-1]
#include<bits/stdc++.h>
using namespace std;int main(){int n,i;int a,b;int result;cin>>n;vector<int>Array(n);vector<int>sum(n,0);for(i=0;i<n;i++){cin>>Array[i];}sum[0] = Array[0];for(i=1;i<n;i++){sum[i] = sum[i-1] + Array[i];}while(cin>>a>>b){if(a==0) result = sum[b];else result = sum[b] - sum[a-1]; printf("%d\n",result);}
}

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

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

相關文章

天愛驗證碼深度解析:從原理到實戰,構建 Web 安全新防線

在網絡安全日益嚴峻的當下&#xff0c;驗證碼作為抵御自動化攻擊的重要屏障&#xff0c;其性能與可靠性直接關系到系統的安全穩定。天愛驗證碼&#xff08;TIANAI CAPTCHA&#xff09;作為國內優秀的開源行為驗證碼解決方案&#xff0c;憑借獨特的技術優勢&#xff0c;在電商、…

軟考(軟件設計師)軟件工程-軟件質量,軟件測試,McCabe圈復雜度

軟件質量 ISO/IEC 9126 是軟件工程領域的經典質量模型&#xff0c;于1991年首次發布&#xff0c;2001年更新后成為軟件產品質量評估的國際標準。其核心貢獻是將抽象的“質量”概念分解為可度量、可管理的特性體系。以下是深度解析&#xff08;2023年行業實踐視角&#xff09;&a…

CentOS7環境安裝包部署并配置MySQL5.7

卸載MySQL卸載MySQL5.71、關閉MySQL5.7服務service mysqld stop2、查看MySQL安裝rpm -qa|grep -i mysqlmysql-community-libs-5.7.35-1.el7.x86_64mysql-community-libs-compat-5.7.35-1.el7.x86_64mysql-community-common-5.7.35-1.el7.x86_64mysql57-community-release-el7-1…

1-Git安裝配置與遠程倉庫使用

Git安裝配置與遠程倉庫使用 1. Git 下載與安裝 ① 進入Git 官網 https://git-scm.com/ ② 選擇合適系統版本下載&#xff0c;本文以windows為例進行下載 當前最新版本為 2.50.1 &#xff0c;瀏覽器默認下載很慢&#xff0c;用迅雷比較快 ③ 安裝Git 我安裝在D盤 等待完…

開源“具身大腦” 實現不同機器人群體協作-RoboBrain

開源“具身大腦” 實現不同機器人群體協作-RoboBrain 具身大小腦協作框架RoboOS與開源具身大腦RoboBrain&#xff0c;實現跨場景多任務輕量化快速部署與跨本體協作&#xff0c;推動單機智能邁向群體智能&#xff0c;為構建具身智能開源統一生態加速場景應用提供底層技術支持。支…

【筆記】訓練步驟代碼解析

目錄 config參數配置 setup_dirs創建訓練文件夾 load_data加載數據 build_model創建模型 train訓練 記錄一下訓練代碼中不理解的地方 config參數配置 config {data_root: r"D:\project\megnetometer\datasets\WISDM_ar_latest\organized_dataset",train_dir: t…

Java填充Word模板

文章目錄前言一、設置word模板普通字段列表字段復選框二、代碼1. 引入POM2. 模板放入項目3.代碼實體類工具類三、測試四、運行結果五、注意事項前言 最近有個Java填充Word模板的需求&#xff0c;包括文本&#xff0c;列表和復選框勾選&#xff0c;寫一個工具類&#xff0c;以此…

【MYSQL8】springboot項目,開啟ssl證書安全連接

文章目錄一、開啟ssl證書1、msysql部署時默認開啟ssl證書2、配置文件3、創建用戶并指定ssl二、添加Java信任庫1、使用 keytool 導入證書2、驗證證書是否已導入三、修改連接配置一、開啟ssl證書 1、msysql部署時默認開啟ssl證書 可通過命令查看&#xff1a; SHOW VARIABLES L…

Telegraf vs. Logstash:實時數據處理架構中的關鍵組件對比

在現代數據基礎設施中&#xff0c;Telegraf 和 Logstash 是兩種廣泛使用的開源數據收集與處理工具&#xff0c;但它們在設計目標、應用場景和架構角色上存在顯著差異。本文將從實時數據處理架構、時序數據庫集成、消息代理支持等方面對比兩者的核心功能&#xff0c;并結合實際應…

Vue Vue-route (4)

Vue 漸進式JavaScript 框架 基于Vue2的學習筆記 - Vue-route 編程式導航和幾種路由 目錄 編程式導航 詳情組件 創建組件 設置路由 電影列表 傳參 另一種方式 動態路由 命名路由 別名 總結 編程式導航 點擊電影列表 跳轉電影詳情 詳情組件 創建組件 在views中創…

存在兩個cuda環境,在conda中切換到另一個

進入 openmmlab 環境 conda activate openmmlab 設置環境變量為 CUDA 12.4&#xff08;只影響當前 shell 會話&#xff09; export PATH/usr/local/cuda-12.4/bin:PATHexportLDLIBRARYPATH/usr/local/cuda?12.4/lib64:PATH export LD_LIBRARY_PATH/usr/local/cuda-12.4/lib64:…

Django 視圖(View)

1. 視圖簡介 視圖負責接收 web 請求并返回 web 響應。視圖就是一個 python 函數,被定義在 views.py 中。響應可以是一張網頁的 HTML 內容、一個重定向、一個 404 錯誤等等。響應處理過程如下圖: 用戶在瀏覽器中輸入網址:www.demo.com/1/100Django 獲取網址信息,去除域名和端…

HarmonyOS基礎概念

一、OpenHarmony、HarmonyOS和Harmony NEXT區別OpenHarmony是由開放原子開源基金會&#xff08;OpenAtom Foundation&#xff09;孵化及運營的開源項目&#xff0c;開放原子開源基金會由華為、阿里、騰訊、百度、浪潮、招商銀行、360等十家互聯網企業共同發起組建。目標是面向全…

spark3 streaming 讀kafka寫es

1. 代碼 package data_import import org.apache.spark.sql.{DataFrame, Row, SparkSession, SaveMode} import org.apache.spark.sql.types.{ArrayType, DoubleType, LongType, StringType, StructField, StructType, TimestampType} import org.apache.spark.sql.functions._…

【跟著PMP學習項目管理】每日一練 - 3

1、你是一個建筑項目的項目經理。電工已經開始鋪設路線,此時客戶帶著一個變更請求來找你。他需要增加插座,你認為這會增加相關工作的成本。你要做的第一件事? A、拒絕做出變更,因為這會增加項目的成本并超出預算 B、參考項目管理計劃,查看是否應當處理這個變更 C、查閱…

CentOS 安裝 JDK+ NGINX+ Tomcat + Redis + MySQL搭建項目環境

目錄第一步&#xff1a;安裝JDK 1.8方法 1&#xff1a;安裝 Oracle JDK 1.8方法 2&#xff1a;安裝 OpenJDK 1.8第二步&#xff1a;使用yum安裝NGINX第三步&#xff1a;安裝Tomcat第四步&#xff1a;安裝Redis第五步&#xff1a;安裝MySQL第六步&#xff1a;MySQL版本兼容性問題…

如何設計一個登錄管理系統:單點登錄系統架構設計

關鍵詞&#xff1a;如何設計一個登錄管理系統、登錄系統架構、用戶認證、系統安全設計 &#x1f4cb; 目錄 開篇&#xff1a;為什么登錄系統這么重要&#xff1f;整體架構設計核心功能模塊安全設計要點技術實現細節性能優化策略總結與展望 開篇&#xff1a;為什么登錄系統這么…

論跡不論心

2025年7月11日&#xff0c;16~26℃&#xff0c;陰 緊急不緊急重要 備考ing 備課不重要 遇見&#xff1a;免費人格測試 | 16Personalities&#xff0c;下面是我的結果 INFJ分析與優化建議 User: Anonymous (隱藏) Created: 2025/7/11 23:38 Updated: 2025/7/11 23:43 Exported:…

【面板數據】省級泰爾指數及城鄉收入差距測算(1990-2024年)

對中國各地區1990-2024年的泰爾指數、城鄉收入差距進行測算。本文參考龍海明等&#xff08;2015&#xff09;&#xff0c;程名望、張家平&#xff08;2019&#xff09;的做法&#xff0c;采用泰爾指數測算城鄉收入差距。參考陳斌開、林毅夫&#xff08;2013&#xff09;的做法&…

http get和http post的區別

HTTP GET 和 HTTP POST 是兩種最常用的 HTTP 請求方法&#xff0c;它們在用途、數據傳輸方式、安全性等方面存在顯著差異。以下是它們的主要區別&#xff1a;1. 用途GET&#xff1a;主要用于請求從服務器獲取資源&#xff0c;比如獲取網頁內容、查詢數據庫等。GET 請求不應該用…