博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-209 Minimum Size Subarray Sum
阅读量:4121 次
发布时间:2019-05-25

本文共 956 字,大约阅读时间需要 3 分钟。

采用类似滑动窗口的形式,.两个指针, start end, end向后走,直到 sum 大于 s. 然后start向后, 直到sum 小于s. 同时更新 min值.复杂度O(n)

O(n) time, O(1) space moving window method using a moving window [start,end] to calculate the sum, first move end forward to get a sub-array with sum>=s, then move start forward to make sum < s, then move end again,..., until end reach the end of array.

注意:nums和s都是正数

class Solution {public:    int minSubArrayLen(int s, vector
& nums) { if(nums.size() == 0) return 0; int start = 0, end = 0, tmpsum = 0, len = nums.size(), res = len + 1; while(end < len){ while(tmpsum < s && end < len) tmpsum += nums[end++]; while(tmpsum >= s) tmpsum -= nums[start++]; res = min(res,end - start + 1); } return res > len ? 0 : res; }};
还有种O(nlgn)的解法,可以参考:http://www.cnblogs.com/grandyang/p/4501934.html和https://leetcode.com/discuss/35289/moving-window-solution-space-another-binary-search-version

你可能感兴趣的文章
12 个JavaScript 特性技巧你可能从未使用过
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(上)
查看>>
【视频教程】Javascript ES6 教程27—ES6 构建一个Promise
查看>>
【5分钟代码练习】01—导航栏鼠标悬停效果的实现
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(中)
查看>>
8种ES6中扩展运算符的用法
查看>>
【视频教程】Javascript ES6 教程28—ES6 Promise 实例应用
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(下)
查看>>
【web素材】03-24款后台管理系统网站模板
查看>>
Flex 布局教程:语法篇
查看>>
年薪50万+的90后程序员都经历了什么?
查看>>
2019年哪些外快收入可达到2万以上?
查看>>
【JavaScript 教程】标准库—Date 对象
查看>>
前阿里手淘前端负责人@winter:前端人如何保持竞争力?
查看>>
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
Linux查看mac地址
查看>>
Linux修改ip
查看>>