【剑指offer】和为S的连续整数序列
2015-07-14 22:31
155 查看
找到所有和为S的连续整数序列,序列长度>=2
我的思路:数学法,限定首元素范围,计算序列长度。
书上解法:用small和big两个游标记录序列的开始和结束位置,调整游标。
我的解法:
我的思路:数学法,限定首元素范围,计算序列长度。
书上解法:用small和big两个游标记录序列的开始和结束位置,调整游标。
我的解法:
/* 直接用数学方法做的 等差数列公式 2*n*a1+n(n-1)/2 = s; 由n>= 2 得 a1 <= (s - 1)/2 对首位数字a1从1到 (s - 1)/2遍历 等差数列公式变形 n*n+(2*a1 - 1)n-2s = 0 可得 n = [-(2a - 1) + sqrt((2a - 1) * (2a - 1) + 8s)]/2 检验n是否为整数,是则得到一个答案 */ class Solution { public: vector<vector<int> > FindContinuousSequence(int sum) { vector<vector<int> > ans; int maxA1 = (sum - 1) / 2; //sum = n*a1 + n(n-1)/2 n最小为2 推导得到 for(int i = 1; i <= maxA1; i++) //首位数字遍历 { double f = (sqrt(double((2 * i - 1) * (2 * i - 1) + 8 * sum)) + 1 - 2 * i) / 2; //计算长度 int n = int(f); if(abs(f - n) < 0.000001) //长度是整数,有效 { vector<int> tempans; for(int j = 0; j < n; j++) tempans.push_back(i + j); ans.push_back(tempans); } } return ans; } };
相关文章推荐
- JS模块化编程
- Reverse Nodes in k-Group
- dom操作val(),text(),html()
- css继承性和不继承的属性。
- css左右两栏布局
- 源泉书签,助您管理海量收藏。www.yuanquanshuqian.com 今日更新:支持了导入url为js代码的书签
- jquery第三弹dom操作(下)
- js 中的cookie
- 【剑指offer】连续子数组最大和
- vs2013 以上的实用小功能-将xml,json自动转换为class
- 2015.7.14 第六课 课程重点(css:仿站及常见代码用法)
- 1218 - Perfect Service(完美服务)
- Json
- 读《JavaScript高级程序设计》
- Code Forces 448C Painting Fence 贪婪的递归
- JavaScript原型与原型链分析
- String转换为JSON以及时间的格式化
- JavaScript学习笔记1:JavaScript学前介绍
- 对于观察者模式,Reactor模式,Proactor模式的一点理解
- angularjs应用骨架(3)