#406 Minimum Size Subarray Sum
来源:互联网 发布:国外户外品牌 知乎 编辑:程序博客网 时间:2024/06/03 22:50
题目描述:
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 -1 instead.
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.
Challenge
题目思路:If you have figured out the O(n) solution, try coding another solution of which the time complexity is O(n log n).
这题还是用two pointers的方法,既然要算subarray的和,那么用一个presum去记录每个index之前的和,可以省去重复计算subarray和的麻烦。用2个pointers,都从头开始,如果subsum >= s,那么l向右移看看有没有更短的答案;反之,r向右移拉长subarray,看看有没有符合条件的答案。
Mycode(AC = 298ms):
class Solution {public: /** * @param nums: a vector of integers * @param s: an integer * @return: an integer representing the minimum size of subarray */ int minimumSize(vector<int> &nums, int s) { // write your code here if (nums.size() == 0) return -1; // 0,2,5,6,8,12,15 // get presum vector<int> presum(nums.size() + 1, 0); for (int i = 1; i <= nums.size(); i++) { presum[i] = presum[i - 1] + nums[i - 1]; } // two pointers to find the min length int l = 0, r = 1, minlen = INT_MAX; while (r <= nums.size()) { // if sum >= s, then increase l to find // shorter answer if (presum[r] - presum[l] >= s) { minlen = min(minlen, r - l); l++; } // if sum < s, then increase r to find answer else { r++; } } return minlen == INT_MAX? -1 : minlen; }};
0 0
- #406 Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum size subarray sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- Minimum Size Subarray Sum
- 33. Search in Rotated Sorted Array
- uva 725 简单枚举
- 注解
- 【IOS】关于ipad和iPhone尺寸的分辨率
- centos 手动增加swap分区
- #406 Minimum Size Subarray Sum
- java中Map的使用方法
- 为什么要配置数据源ODBC
- 万年历
- android studio 使用universal-image-loader第三方库的方法
- Android pad 连接蓝牙打印机Gprinter---实现蓝牙打印功能
- android开发之提高应用启动速度_splash页面瞬间响应_避免APP启动闪白屏
- OC中的单例模式和委托模式
- 同步IO与异步IO的区别