Leetcode 209.长度最小子序列(滑动窗口)
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 209.长度最小子序列(滑动窗口)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
傳送門:力扣
給定一個含有?n?個正整數的數組和一個正整數 target 。
找出該數組中滿足其和 ≥ target 的長度最小的 連續子數組?[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數組,返回 0 。
示例 1:
輸入:target = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子數組?[4,3]?是該條件下的長度最小的子數組。
示例 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
滑動窗口的思想,一開始兩個指針放在起始部位。快指針不斷向前,sum累加,直到sum超過目標target就進入while循環去移動慢指針。
#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超過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;//通過三目表達式來更新result,如果subLength超過最大整型長度,就讓result保持INT_MAX;sum -= nums[i++];//通過while循環去更新i和subLength}}return result == INT_MAX ? 0 : result;//返回判斷,result == INTMAX代表沒有更新。說明沒有找到這個值,返回零} };總結
以上是生活随笔為你收集整理的Leetcode 209.长度最小子序列(滑动窗口)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php inputcsv,php exc
- 下一篇: windows故障转移群集和mysql_