Leetcode 209.长度最小子序列(滑动窗口)
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 209.长度最小子序列(滑动窗口)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
傳送門:力扣
給定一個(gè)含有?n?個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù) target 。
找出該數(shù)組中滿足其和 ≥ target 的長(zhǎng)度最小的 連續(xù)子數(shù)組?[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其長(zhǎng)度。如果不存在符合條件的子數(shù)組,返回 0 。
示例 1:
輸入:target = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子數(shù)組?[4,3]?是該條件下的長(zhǎng)度最小的子數(shù)組。
示例 2:
輸入:target = 4, nums = [1,4,4]
輸出:1
示例 3:
輸入:target = 11, nums = [1,1,1,1,1,1,1,1]
輸出:0
?
提示:
1 <= target <= 109
1 <= nums.length <= 105
1 <= nums[i] <= 105
滑動(dòng)窗口的思想,一開(kāi)始兩個(gè)指針?lè)旁谄鹗疾课弧?熘羔槻粩嘞蚯?#xff0c;sum累加,直到sum超過(guò)目標(biāo)target就進(jìn)入while循環(huán)去移動(dòng)慢指針。
#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<vector> using namespace std;class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int result = INT_MAX;//防止subLength超過(guò)int的最大范圍10的九次方。int sum = 0;int i = 0; int j = 0;int subLength = 0;for (j = 0; j < nums.size(); j++) {sum += nums[j];while (sum >= target) {subLength = j - i + 1;result = result < subLength ? result : subLength;//通過(guò)三目表達(dá)式來(lái)更新result,如果subLength超過(guò)最大整型長(zhǎng)度,就讓result保持INT_MAX;sum -= nums[i++];//通過(guò)while循環(huán)去更新i和subLength}}return result == INT_MAX ? 0 : result;//返回判斷,result == INTMAX代表沒(méi)有更新。說(shuō)明沒(méi)有找到這個(gè)值,返回零} };總結(jié)
以上是生活随笔為你收集整理的Leetcode 209.长度最小子序列(滑动窗口)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php inputcsv,php exc
- 下一篇: java 异常补偿解决_第三方接口调用异