[Leetcode]Minimum Size Subarray Sum
来源:互联网 发布:淘宝网店培训多少钱 编辑:程序博客网 时间:2024/05/18 02:58
题目要求出一个仅包含正数的数组nums中最小的子数组(连续)使得子数组中所有元素的和大于一个给定的数s,并返回该子数组的长度。
题目来源: Minimum Size Subarray Sum
解法一:暴力搜索 O(n^2)
class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { int min = INT_MAX; for(int i = 0; i < nums.size(); i++) { int sum = 0; for(int j = i; j < nums.size(); j++) { sum += nums[i]; if(sum >= s && i - j + 1 < min) { min = i - j + 1; continue; } } } return min == INT_MAX ? 0 : min; }};
解法二:Two Pointer O(n)
看了tags以后,想起来这类问题其实包含了很多重复的子问题,暴力搜索往往太过浪费。我们实际上是想要一个最小窗,这个窗可以通过左右两个指针start和end进行模拟。由于所有元素都是正数,我们只要先确定窗口的右边界,再逐渐缩从左边界进行压缩即可。
class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { int sum = 0, start = 0, minlen = INT_MAX; bool flag = false; for(int end = 0; end < nums.size(); i++) { sum += nums[end]; if(sum >= s) { flag = true; while(sum >= s) sum -= nums[start++]; if(minlen > i - start + 2) minlen = i - start + 2; } } if(flag) return minlen; else return 0; }};
0 0
- leetcode-Minimum Size Subarray Sum
- 【LeetCode】Minimum Size Subarray Sum
- [LeetCode] Minimum Size Subarray Sum
- LeetCode Minimum Size Subarray Sum
- [leetcode]Minimum Size Subarray Sum
- [leetCode] Minimum Size Subarray Sum
- leetcode Minimum Size Subarray Sum
- LeetCode Minimum Size Subarray Sum
- leetcode:Minimum Size Subarray Sum
- [Leetcode]Minimum Size Subarray Sum
- Leetcode: Minimum Size Subarray Sum
- [LeetCode]Minimum Size Subarray Sum
- [leetcode] Minimum Size Subarray Sum
- 【LeetCode】Minimum Size Subarray Sum
- Minimum Size Subarray Sum -- leetcode
- leetcode--Minimum Size Subarray Sum
- leetcode:Minimum Size Subarray Sum
- 【leetcode】Minimum Size Subarray Sum
- 最长上升子序列nlogn算法
- 几种PHP实现网页抓取的程序代码
- java GUI,贷款服务器
- Qt QToolBar
- c++从数据库的表中读取数据
- [Leetcode]Minimum Size Subarray Sum
- Linux下Ganglia集群监控安装、配置笔记
- ubuntu无法获得排他锁解决方法
- ubuntu15.04+kali linux
- opencv 帧率
- 大数据时代的地理信息科学与科研能力培养
- 更简单、更安全的查询方法
- vs2013 ODBC连接Oracle 学习记录
- 开始反向思考——反其道而行之