和为S的连续正序列
2024-10-08 17:48:03
【问题】小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!
【思路】我们可以使用双指针来进行表示一个连续正数序列的边界,然后根据等差数列的公式:sum = (begin+end)*N/2 ,当我们求得一个正数序列的和sum后,如果sum大于目标数值,我们让begin向右移动,如果小于目标数值,则让end向右移动,最终的最终,两个指针都会指到同一位置,即目标数值,从而退出循环!当等于目标时,我们将[begin, end]中的所有数存入数组中即可!
class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum) {
vector<vector<int>> res;
vector<int> tmp;
int pLow = , pHigh = ;
while(pHigh > pLow){
int sum_list = (pHigh + pLow)*(pHigh-pLow+)/;
if(sum_list == sum){
for(int i = pLow;i <= pHigh;i++){
tmp.push_back(i);
}
res.push_back(tmp);
tmp.clear(); // 将tmp清空
pLow++;
}
else if(sum_list < sum){
pHigh++;
}else{
pLow++;
}
}
return res;
}
};
最新文章
- html5 localStorage实现表单本地存储
- android-non-ui-ui-thread-communications-part-5-5
- oracle之substr函数
- nginx学习12 ngx_cycle_t 和 ngx_init_cycle
- JavaScript 基本语法结构
- c++标准头文件
- Spark技术内幕: Task向Executor提交的源码解析
- Ubuntu 14.04 下使用微软的跨平台轻量级开发神器 Visual Studio Code
- js循环内0.5s停止
- ntfs读写工具Paragon NTFS 15无限使用教程
- GitHub下载单个文件
- React++ node.js ++SQL Sever ++MySQL++ python ++ php ++ java ++ c++ c#++ java ++ android ++ ios ++Linux+
- 配置免SSH
- UVA327
- MQTT的学习研究(一)MQTT学习网站
- 基于.NET的开源搜索引擎-DotLucene(2)
- Vue.js入门系列教程(一)
- samtools软件作用
- Ubuntu启动自动登录并启动程序
- 路由vue-router进阶