LintCode 406: Minimum Size
2024-10-21 07:31:44
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;
}
最新文章
- 使用python的subprocess启动windows程序提示WindowsError: [Error 6] The handle is invalid
- IOS 跳转时传参数的常用方法
- python模块的安装
- Akka(一) - akka的wordcount
- 安装Oracle软件
- 线性回归(linear regression)之监督学习
- ●linux进程的查看与操作●
- 数据库连接池php-cp介绍
- ASSERT_VALID和ASSERT宏分析
- 读书笔记-实用单元测试(英文版) Pragmatic Unit Testing in C# with NUnit
- IE6存在的一些兼容
- BootStrap 智能表单系列 四 表单布局介绍
- Eclipse Workspace Unavailable
- Codeforces 4A-Watermelon(意甲冠军)
- JAVA的abstract修饰符 &;&; 接口interface用法 &;&; 抽象类和interface的差别
- java加密算法入门(三)-非对称加密详解
- Linux上Oracle自动启停方案
- NHibernate教程(21)——二级缓存(下)
- WebAPI集成SignalR
- Startup.国外新锐公司及其技术Blog
热门文章
- Notepad++如何多视图(分屏)显示
- 3dContactPointAnnotationTool开发日志(三二)
- PAT 甲级 1019 General Palindromic Number
- 爬虫学习之-sqlite3
- UEditor前端配置项说明
- p2 休眠模式
- MySQL专题3 SQL 优化
- 【C++】C++ static关键字详解
- appium1.6.3/1.6.4/1.6.5版本下如何支持安卓下ByName定位
- 第83天:jQuery中操作form表单