【LeetCode每日一題】LeetCode 209.長度最小的子數組

LeetCode 209.長度最小的子數組

題目描述

給定一個正整數數組 nums 和一個正整數 target,找出連續子數組的最小長度,使得子數組的和大于或等于 target。如果不存在符合條件的子數組,返回 0。

Java 實現代碼

public class Solution {public int minSubArrayLen(int target, int[] nums) {int n = nums.length;int left = 0, sum = 0, minLength = Integer.MAX_VALUE;for (int right = 0; right < n; right++) {sum += nums[right]; // 擴展窗口,加入當前元素// 窗口內的和大于等于 target 時,嘗試縮小窗口while (sum >= target) {minLength = Math.min(minLength, right - left + 1);sum -= nums[left]; // 移動左指針,縮小窗口left++;}}return minLength == Integer.MAX_VALUE ? 0 : minLength;}
}

解題思路

  1. 滑動窗口:使用兩個指針 leftright 來表示當前窗口的邊界,窗口的右邊界逐步擴展,直到窗口內的和大于等于 target

  2. 窗口收縮:每當當前窗口的和大于等于 target 時,嘗試通過移動左指針(即收縮窗口)來找到最小的符合條件的子數組。每次更新最小長度。

  3. 返回結果:在遍歷完數組后,若未找到符合條件的子數組,則返回 0;否則返回最小長度。

復雜度分析

  • 時間復雜度:O(n),其中 n 是數組的長度。由于每個元素最多被訪問兩次(一次是右指針擴展,另一次是左指針收縮),因此時間復雜度是 O(n)。
  • 空間復雜度:O(1),只用了常數級別的額外空間。

舉例說明執行過程

假設輸入數組 nums = [2, 3, 1, 2, 4, 3]target = 7

  1. 初始化

    • left = 0, sum = 0, minLength = Integer.MAX_VALUE
  2. 遍歷右指針

    • right = 0sum = 0 + nums[0] = 2sum = 2,不滿足條件 sum >= 7,繼續擴展。
    • right = 1sum = 2 + nums[1] = 5sum = 5,不滿足條件 sum >= 7,繼續擴展。
    • right = 2sum = 5 + nums[2] = 6sum = 6,不滿足條件 sum >= 7,繼續擴展。
    • right = 3sum = 6 + nums[3] = 8sum = 8,滿足條件 sum >= 7,此時子數組為 [2, 3, 1, 2],長度為 4,更新 minLength = 4
  3. 收縮窗口

    • 由于滿足 sum >= target,我們嘗試通過移動 left 來縮小窗口:
    • left = 0sum = 8,縮小窗口,sum -= nums[0] = 8 - 2 = 6left = 1sum = 6,不滿足 sum >= 7,繼續擴展右指針。
  4. 繼續遍歷

    • right = 4sum = 6 + nums[4] = 10,滿足 sum >= 7,此時子數組為 [3, 1, 2, 4],長度為 4,但 minLength 仍然保持 4。
  5. 收縮窗口

    • left = 1sum = 10,繼續縮小窗口,sum -= nums[1] = 10 - 3 = 7,此時 sum >= target,子數組為 [1, 2, 4],長度為 3,更新 minLength = 3
  6. 繼續遍歷

    • right = 5sum = 7 + nums[5] = 10,滿足 sum >= 7,此時子數組為 [1, 2, 4, 3],長度為 4,但 minLength 保持為 3。
  7. 收縮窗口

    • left = 2sum = 10,繼續縮小窗口,sum -= nums[2] = 10 - 1 = 9,仍然滿足 sum >= 7,子數組為 [2, 4, 3],長度為 3,minLength 保持為 3。
    • left = 3sum = 9,繼續縮小窗口,sum -= nums[3] = 9 - 2 = 7,滿足 sum >= 7,子數組為 [4, 3],長度為 2,更新 minLength = 2
  8. 結束遍歷

    • 右指針已經遍歷完整個數組,最終得到 minLength = 2

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

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

相關文章

【openwrt】openwrt-21.02 基于IP地址使用ipset實現策略路由操作說明

openwrt版本信息 DISTRIB_ID=OpenWrt DISTRIB_RELEASE=21.02-SNAPSHOT DISTRIB_REVISION=r0-6bf6af1d5 DISTRIB_TARGET=mediatek/mt7981 DISTRIB_ARCH=aarch64_cortex-a53 DISTRIB_DESCRIPTION=OpenWrt 21.02-SNAPSHOT r0-6bf6af1d5 DISTRIB_TAINTS=no-all busybox override …

【H2O2|全棧】MySQL的基本操作(三)

目錄 前言 開篇語 準備工作 案例準備 多表查詢 笛卡爾積 等值連接 外連接 內連接 自連接 子查詢 存在和所有 含于 分頁查詢 建表語句 結束語 前言 開篇語 本篇繼續講解MySQL的一些基礎的操作——數據字段的查詢中的多表查詢和分頁查詢&#xff0c;與單表查詢…

從單體到微服務:如何借助 Spring Cloud 實現架構轉型

一、Spring Cloud簡介 Spring Cloud 是一套基于 Spring 框架的微服務架構解決方案&#xff0c;它提供了一系列的工具和組件&#xff0c;幫助開發者快速構建分布式系統&#xff0c;尤其是微服務架構。 Spring Cloud 提供了諸如服務發現、配置管理、負載均衡、斷路器、消息總線…

yarn : 無法加載文件 C:\Users\L\AppData\Roaming\npm\yarn.ps1,因為在此系統上禁

關于執行安裝yarn命令后執行yarn -v報錯&#xff1a; 先確認執行安裝yarn命令是否有誤 # 安裝yarn npm install yarn -g 終端輸入set-ExecutionPolicy RemoteSigned 當然如果yarn -v仍然執行失敗&#xff0c;考慮使用管理員方式運行IDEA&#xff0c; 注&#xff1a;如上操作…

centos 常見問題處理

免密登錄配置 # 在當前機器下 執行命令 生成 私鑰和公鑰 ~/.ssh 目錄下 ssh-keygen -t rsa # 執行如下命令 把公鑰 放到 對應機器上的 ~/.ssh/authorized_keys ssh-copy-id 172.17.68.220 # 如此 兩臺機器兩兩配置 centos ssh連接慢 vim /etc/ssh/sshd_config # UseD…

java全棧day12-后端Web實戰(IOC+DI)

前言&#xff1a;前面的基礎知識了解后進入實戰篇&#xff0c;從以下四個方面進行準備 一、開發規范 1.1前后端分離開發 前言回顧 二、Restful風格 引言&#xff1a;前端與后端在進行交互的時候&#xff0c;所使用的url風格叫Restful。 2.1概述 小結 2.2環境準備 2.2.1apif…

鏈式設計模式——裝飾模式和職責鏈模式

一、裝飾模式 1、概述 動態地給一個對象添加一些額外的職責&#xff0c;就增加功能來說&#xff0c;裝飾模式比生成子類更為靈活。 ConcreteComponent &#xff1a;是定義了一個具體的對象&#xff0c;可以給這個對象添加一些職責&#xff1b;Decorator &#xff1a;裝飾抽象…

Cmake+基礎命令

一、版本要求&#xff1a; 檢查 cmake 版本號的最低要求&#xff0c;不滿足條件時報錯。 cmake_minimum_required(VERSION <version>)參數&#xff1a; version&#xff1a;最低要求的版本號 例子&#xff1a; # 最低要求安裝3.21版本的cmake cmake_minimum_required…

Java——容器(單例集合)(上)

一 容器介紹 容器&#xff0c;是用來容納物體、管理物體。生活中,我們會用到各種各樣的容器。如鍋碗瓢盆、箱子和包等 程序中的“容器”也有類似的功能&#xff0c;用來容納和管理數據。比如&#xff0c;如下新聞網站的新聞列表、教育網站的課程列表就是用“容器”來管理 視頻…

word poi-tl 表格功能增強,實現表格功能垂直合并

目錄 問題解決問題poi-tl介紹 功能實現引入依賴模版代碼效果圖 附加&#xff08;插件實現&#xff09;MergeColumnData 對象MergeGroupData 類ServerMergeTableData 數據信息ServerMergeTablePolicy 合并插件 問題 由于在開發功能需求中&#xff0c;word文檔需要垂直合并表格&…

OpenCV相機標定與3D重建(11)機器人世界手眼標定函數calibrateRobotWorldHandEye()的使用

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 計算機器人世界/手眼標定&#xff1a; w T b _{}^{w}\textrm{T}_b w?Tb? 和 c T g _{}^{c}\textrm{T}_g c?Tg?。 cv::calibrateRobotWorldHa…

GPT系列模型簡要概述

GPT-1&#xff1a;&#xff08;0.117B參數量&#xff0c;0.8B words預訓練數據) 動機&#xff1a; 在RNN和Transformer之間&#xff0c;選擇了后者。 和《All your need is Attention》翻譯模型的Encoder-Decoder架構相比&#xff0c;只保留Decoder&#xff0c;因此去掉了Cross…

汽車升級到底應不應該設置“可取消“功能

最近&#xff0c;汽車OTA&#xff08;Over-the-Air&#xff09;升級頻頻成為車主討論的熱點。有些車主反映&#xff0c;一些升級增加了實用功能&#xff0c;而另一些卻讓體驗變得復雜甚至帶來不便。于是&#xff0c;大家不禁發問&#xff1a;汽車升級功能究竟應不應該允許“可取…

單片機 PCB 設計要點

一、引言 單片機作為現代科技的重要組成部分&#xff0c;其 PCB 設計至關重要。本文將詳細介紹單片機 PCB 設計的要點和流程&#xff0c;幫助讀者更好地掌握這一關鍵技術。 在電子世界的浩瀚星海中&#xff0c;單片機無疑是現代科技中一顆閃爍的明珠。作為掌握嵌入式系統的基…

Django+Apscheduler 開發定時任務模塊【六】

目錄 回顧 前五個文章講述了django-autojob的部分代碼和執行邏輯 【DjangoApscheduler 開發定時任務模塊】【一】 【DjangoApscheduler 開發定時任務模塊】【二】 【DjangoApscheduler 開發定時任務模塊】【三】 【DjangoApscheduler 開發定時任務模塊】【四】 【DjangoApsch…

Ubuntu中配置交叉編譯工具的三條命令的詳細研究

關于該把下面的三條交叉編譯配置語句加到哪里&#xff0c;詳情見 https://blog.csdn.net/wenhao_ir/article/details/144326545 的第2點。 現在試解釋下面三條交叉編譯配置語句&#xff1a; export ARCHarm export CROSS_COMPILEarm-buildroot-linux-gnueabihf- export PATH$…

wlanapi.dll丟失怎么辦?有沒有什么靠譜的修復wlanapi.dll方法

在遇到各種系統文件錯誤當中&#xff0c;其中之一就是“wlanapi.dll文件丟失”的問題。這種問題通常發生在Windows操作系統上&#xff0c;特別是當系統試圖執行與無線網絡相關的任務時。wlanapi.dll是一個重要的系統文件&#xff0c;它負責處理Windows無線網絡服務的許多功能。…

利用ipmi工具設置ip、用戶等設置

#打開交互模式 ipmitool -I open shell #切換管理端口為lom1&#xff0c;即共享em1/eth0 delloem lan set shared with lom1 #設置ip、mask、gateway lan set 1 ipaddr 10.0.0.250 lan set 1 netmask 10.0.0.250 lan set 1 defgw ipaddr 10.0.0.250 #查看用戶名 user list 1 …

Python之因子分析詳細步驟

1.數學原理 1.1數學模型 1.2正交因子模型假設 注意&#xff1a;下面的推導都是基于這一假設。因此&#xff0c;這里的模型都是屬于正交因子模型。 1.3正交因子模型的協方差結構 1.4各類方差貢獻的介紹 在1.3正交因子模型的協方差結構中&#xff0c;我們介紹了“方差貢獻”&…

unity3d—demo(2d人物左右移動發射子彈)

目錄 人物代碼示例&#xff1a; 子彈代碼示例&#xff1a; 總結上面代碼&#xff1a; 注意點&#xff1a; 人物代碼示例&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerTiao : MonoBehaviour {public f…