LintCode 406: Minimum Size

题目描述

给定一个由 n 个整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。

样例

给定数组[2,3,1,2,4,3]s = 7, 子数组[4,3]是该条件下的最小长度子数组。

Thu Feb 23 2017

思路

数组的题一般都是用指针扫描的。

这里是用一前一后两个指针都从左往右移,前面的指针一直移直到和大于s为止;后面的指针此时一直右移,直到距离最短为止。

时间复杂度是\(O(n)\).

代码

// 和大于S的最小子数组
int minimumSize(vector<int> &nums, int s)
{
if (nums.size() <= 0) return -1;
int l = 0, r = 0, sum = nums[0], ans = 6e5;
while(1)
{
if (sum >= s)
{
if (r - l + 1 < ans)
{
ans = r - l + 1;
}
else
{
sum -= nums[l];
++l;
}
}
else
{
sum += nums[r+1];
++r;
}
if (r == nums.size() || l > r) break;
}
if (ans == 6e5) return -1;
return ans;
}

最新文章

  1. 使用python的subprocess启动windows程序提示WindowsError: [Error 6] The handle is invalid
  2. IOS 跳转时传参数的常用方法
  3. python模块的安装
  4. Akka(一) - akka的wordcount
  5. 安装Oracle软件
  6. 线性回归(linear regression)之监督学习
  7. ●linux进程的查看与操作●
  8. 数据库连接池php-cp介绍
  9. ASSERT_VALID和ASSERT宏分析
  10. 读书笔记-实用单元测试(英文版) Pragmatic Unit Testing in C# with NUnit
  11. IE6存在的一些兼容
  12. BootStrap 智能表单系列 四 表单布局介绍
  13. Eclipse Workspace Unavailable
  14. Codeforces 4A-Watermelon(意甲冠军)
  15. JAVA的abstract修饰符 &amp;&amp; 接口interface用法 &amp;&amp; 抽象类和interface的差别
  16. java加密算法入门(三)-非对称加密详解
  17. Linux上Oracle自动启停方案
  18. NHibernate教程(21)——二级缓存(下)
  19. WebAPI集成SignalR
  20. Startup.国外新锐公司及其技术Blog

热门文章

  1. Notepad++如何多视图(分屏)显示
  2. 3dContactPointAnnotationTool开发日志(三二)
  3. PAT 甲级 1019 General Palindromic Number
  4. 爬虫学习之-sqlite3
  5. UEditor前端配置项说明
  6. p2 休眠模式
  7. MySQL专题3 SQL 优化
  8. 【C++】C++ static关键字详解
  9. appium1.6.3/1.6.4/1.6.5版本下如何支持安卓下ByName定位
  10. 第83天:jQuery中操作form表单