<LeetCode OJ> 209. Minimum Size Subarray Sum
来源:互联网 发布:v70摩托罗拉淘宝 编辑:程序博客网 时间:2024/05/22 10:22
209. Minimum Size Subarray Sum
Total Accepted: 26840 Total Submissions: 105654 Difficulty: Medium
Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s.
If there isn't one, return 0 instead.
For example, given the array [2,3,1,2,4,3]
and s = 7
,
the subarray [4,3]
has the minimal length under the problem constraint.
分析:
这个题目一来就应该想到应该一点一点累加恰好找到这个s的累加和,统计出长度
所以接着缩小数据,再次找到恰好大于s的位置,更新最小长度,恰好是为了尽可能小
具体:用一个迭代器慢ite1,一个迭代器快ite2
如果当前序列的和小于s则ite2继续右移动(增加和),否则ite1右移动(相当于减小和)
class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { if(nums.empty()) return 0; vector<int>::iterator ite1=nums.begin(); vector<int>::iterator ite2=ite1; int minLen=INT_MAX; int curSum=*ite1,curLen=1; while(true) { if(curSum >= s ) { if(curLen <minLen) minLen=curLen; curSum-=*ite1; ite1++; curLen--; continue; } ite2++; if(ite2==nums.end()) break; curLen++; curSum+=*ite2; } if(minLen==INT_MAX) return 0; return minLen; }};
别人的算法
(本质一样),O(N)的速度:
class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { int n = nums.size(), start = 0, sum = 0, minlen = INT_MAX; for (int i = 0; i < n; i++) { sum += nums[i]; while (sum >= s) { minlen = min(minlen, i - start + 1); sum -= nums[start++]; } } return minlen == INT_MAX ? 0 : minlen; }};
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50453943
原作者博客:http://blog.csdn.net/ebowtang
1 0
- <LeetCode OJ> 209. Minimum Size Subarray Sum
- [leetcode] 209.Minimum Size Subarray Sum
- 【leetcode】209. Minimum Size Subarray Sum
- [Leetcode]209. Minimum Size Subarray Sum
- [LeetCode]209. Minimum Size Subarray Sum
- leetcode 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum LeetCode
- LeetCode 209. Minimum Size Subarray Sum
- LeetCode *** 209. Minimum Size Subarray Sum
- 【leetcode】209. Minimum Size Subarray Sum
- LeetCode 209. Minimum Size Subarray Sum
- leetcode.209. Minimum Size Subarray Sum
- 【LeetCode】209. Minimum Size Subarray Sum
- [Leetcode]209. Minimum Size Subarray Sum
- [leetcode]209. Minimum Size Subarray Sum[存疑]
- [leetcode] 209. Minimum Size Subarray Sum
- leetcode 209. Minimum Size Subarray Sum
- leetcode 209. Minimum Size Subarray Sum
- springboot整合freemarker
- Windows10应用程序无法正常启动0xc000007b怎么解决
- js中this指什么
- 【留言板】在这聊个天勾搭一下神犇之类的
- Mysql学习总结(6)——MySql之ALTER命令用法详细解读
- <LeetCode OJ> 209. Minimum Size Subarray Sum
- jquery禁用某些字段
- Android Studio R文件丢失 puzzle
- UIImageView裁剪成圆形的方法
- Java线程安全和非线程安全
- xml解析
- 《Java编程思想》学习笔记1——面向对象和JVM基础
- Sikuli -web页面自动化测试工具
- /Library/Ruby/Gems/2.0.0/gems/cocoapods-stats-0.5.3/lib/cocoapods_plugin.rb 解决方法