leetcode209. 长度最小的子数组(滑动窗口)
生活随笔
收集整理的這篇文章主要介紹了
leetcode209. 长度最小的子数组(滑动窗口)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一:題目
二:上碼
class Solution { public:/**思路:1.滑動(dòng)窗口解法1>:確定窗口內(nèi)是什么2>:確定窗口的起始位置3>:確定窗口的終止位置2.窗口:也就是我們的求的連續(xù)字符串的和3.窗口的起始位置: 窗口的起始位置最先是我們數(shù)組的起始位置,當(dāng)窗口內(nèi)連續(xù)數(shù)組的和大于target的時(shí)候, 起始位置就需要往前移動(dòng)來(lái)縮小我們窗口的大小4.窗口的終止位置: 窗口的終止位置就是我們的數(shù)組的下標(biāo)*/int minSubArrayLen(int target, vector<int>& nums) {int i = 0;//起始位置int length = 0;//窗口的大小int ans = INT_MAX;int sum = 0;for (int j = 0; j < nums.size(); j++) {sum += nums[j];while (sum >= target) {//要開(kāi)始移動(dòng)我們窗口的起始位置length = (j-i+1);//這里加一是因?yàn)?我們的j是從0開(kāi)始的ans = ans > length ?length :ans;//開(kāi)始縮小我們的窗口sum -= nums[i++];} } return ans == INT_MAX ? 0 : ans;} };// class Solution { // public: // /** // 思路: // 1.暴力解法 // 兩層for循環(huán),記錄下來(lái) >=target 的字符串長(zhǎng)度。 // 2.超時(shí) // */ // int minSubArrayLen(int target, vector<int>& nums) {// int length = nums.size(); // int ans = INT_MAX;// for (int i = 0; i < length; i++) { // vector<int> v; // for (int j = i; j < nums.size(); j++) { // v.push_back(nums[j]); // int sum = accumulate(v.begin(),v.end(),0); // if(sum >= target) { // if (ans > v.size()) { // ans = v.size(); // } else { // break; // } // }// } // }// if(ans == INT_MAX) return 0;// return ans; // } // };總結(jié)
以上是生活随笔為你收集整理的leetcode209. 长度最小的子数组(滑动窗口)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: AOC 推出新款 Q27G10E 显示器
- 下一篇: 通过gifvedio软件实现QQ动态头像