剑指offer——65和为S的连续正数序列
题目描述
输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
题解:
第一种方法,找规律
第num开始,到num+n构成的序列和 == sum
么你会发现,则这些数全部减去(num-1)后构成序列 1,2,3,4,5,,,,n,而他们的和为n*(n+1)/2
以满足条件的序列必满足: n*(num-1) + n*(n+1)/2 == sum
第二种方法,滑动窗口
使用滑动窗口,和大了,则左指针右移,并吐出左数,和小了,则右指针右移,加上右数
//第一种方法,找规律
//第num开始,到num+n构成的序列和 == sum
//么你会发现,则这些数全部减去(num-1)后构成序列 1,2,3,4,5,,,,n,而他们的和为n*(n+1)/2
//以满足条件的序列必满足: n*(num-1) + n*(n+1)/2 == sum
class Solution01 {
public:
vector<vector<int> > FindContinuousSequence(int sum) {
vector<vector<int> >res;
for (int i = ; i < sum; ++i)
{
int theta = ( * i - )*( * i - ) + * sum;
int gen = sqrt(theta);
if (gen*gen != theta)continue;
int a = ( - * i) + gen;
if (a % != )continue;
vector<int>temp;
for (int j = ; j < a / ; ++j)
temp.push_back(i + j);
res.push_back(temp);
}
return res;
}
}; //第二种方法,滑动窗口
//使用滑动窗口,和大了,则左指针右移,并吐出左数,和小了,则右指针右移,加上右数
class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum) {
if (sum < )return{};
vector<vector<int> >res;
int L = , R = , S = + ;
while (L < R && R < sum){
if (S == sum){
vector<int>temp;
for (int j = L; j <= R; ++j)
temp.push_back(j);
res.push_back(temp);
}
if (S >= sum) {
S -= L;
++L;
}
else {
++R;
S += R;
}
}
return res;
}
};
剑指offer——65和为S的连续正数序列的更多相关文章
- 【剑指Offer】和为S的连续正数序列 解题报告(Python)
[剑指Offer]和为S的连续正数序列 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interview ...
- 【剑指offer】和为定值的连续正数序列
.可是他并不满足于此,他在想到底有多少种连续的正数序列的和为100(至少包含两个数).没多久,他就得到还有一组连续正数和为100的序列:18,19,20,21,22.如今把问题交给你,你能不能也非常快 ...
- 《剑指offer》和为S的连续正数序列
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- Go语言实现:【剑指offer】和为S的连续正数序列
该题目来源于牛客网<剑指offer>专题. 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数 ...
- 剑指offer系列46---和为s的连续正数序列
[题目]输出所有和为S的连续正数序列.序列为:1,2,3,4,5,6,7,8................ * 序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 package com.e ...
- 剑指Offer 41. 和为S的连续正数序列 (其他)
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- 【剑指offer】 和为s的连续正数序列,C++实现
原创博文,转载请注明出处! # 题目 # 思路 设置两个辅助变量small和big,small表示序列的最小值,big表示序列的最大值.如果sum(small ~ big) > s,则增大sma ...
- [剑指Offer] 41.和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- 【剑指offer】和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
随机推荐
- 数据访问层的接口IBaseDAL
using System; using System.Collections; using System.Data; using System.Data.Common; using System.Co ...
- Intellij IDEA 安装Scala插件 + 创建Scala项目
一.IDEA 2018 Ultimate edition (旗舰破解版下载地址) 百度网盘地址:https://pan.baidu.com/s/1d9ArRH6adhDUGiJvRqnZMw 二.I ...
- java入门之:Hello World
import java.util.Scanner; public class HelloWorld{ public static void main(String[] args){ //向终端打印he ...
- Spring学习笔记(9)——注入参数
集合类型属性 1.Set类型 private Set<String> sets=new HashSet<String>(); //我们需要给它添加set方法 public Se ...
- ollvm 编译
ollvm 的编译相对 llvm 更简单, 1:下载ollvm代码,去 https://github.com/obfuscator-llvm/obfuscator/tree/llvm-4.0 下载,并 ...
- idae父子项目Test执行报Result Maps collection already contains value for xxx
现象:同一个springmvc工程使用eclipse和idea用Tomcat启动都没问题,但是如果走单元测试使用到了@ContextConfiguration这个spring的上下文注解idea出问题 ...
- KiCAD泪滴
KiCAD泪滴 KiCAD没有自带的补泪滴功能,必须先下载一个插件,然后才能进行泪滴操作 链接 提取码:ey8o 1.下载泪滴插件,解压后将整个文件夹复制到目录 C:\Program Files\K ...
- HDU-6532 Chessboard 2019广东省省赛B题(费用流)
比赛场上很容易想到是费用流,但是没有想到建图方法qwq,太弱了. 这里直接贴官方题解: 费用流.离散化坐标,每行用一个点表示,每列也用一个点表示.表示第i-1行的点向表示第i行的点连边,容量为第i行及 ...
- vue中key的作用
1.v-if中用key管理可复用的元素 Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染.这么做,除了使 Vue 变得非常快之外,还有一些有用的好处.例如,如果你允许用户在不同的 ...
- Ubuntu 16.04 安装docker-ce,docker-compose
Get Docker CE for Ubuntu 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc 使用 ...