【问题】小明很喜欢数学,有一天他在做数学作业时,要求计算出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;
}
};

最新文章

  1. html5 localStorage实现表单本地存储
  2. android-non-ui-ui-thread-communications-part-5-5
  3. oracle之substr函数
  4. nginx学习12 ngx_cycle_t 和 ngx_init_cycle
  5. JavaScript 基本语法结构
  6. c++标准头文件
  7. Spark技术内幕: Task向Executor提交的源码解析
  8. Ubuntu 14.04 下使用微软的跨平台轻量级开发神器 Visual Studio Code
  9. js循环内0.5s停止
  10. ntfs读写工具Paragon NTFS 15无限使用教程
  11. GitHub下载单个文件
  12. React++ node.js ++SQL Sever ++MySQL++ python ++ php ++ java ++ c++ c#++ java ++ android ++ ios ++Linux+
  13. 配置免SSH
  14. UVA327
  15. MQTT的学习研究(一)MQTT学习网站
  16. 基于.NET的开源搜索引擎-DotLucene(2)
  17. Vue.js入门系列教程(一)
  18. samtools软件作用
  19. Ubuntu启动自动登录并启动程序
  20. 路由vue-router进阶

热门文章

  1. Android框架模式
  2. [Codeforces #608 div2]1271A Suits
  3. 004、Java的多行注释
  4. Quartz 调用
  5. --转载 详细介绍java中的数据结构
  6. HTML的文档结构与语法(二)
  7. Redis 详解 (六) RDB 持久化
  8. Hash!
  9. 【CS224n-2019学习笔记】Lecture 1: Introduction and Word Vectors
  10. C#获取刚插入的数据的id