剑指Offer-41.和为S的连续正数序列(C++/Java)
题目:
输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
分析:
我们可以初始化left和right分别为1和2,作为正数序列的左右边界,计算序列的数字和,利用高斯求和公式即可。
当我们的数列和小于所给的sum时,可以将right,也就是数列的右边界加1,增加我们的数列和。
当我们的数列和大于所给的sum时,可以将left,也就是数列的左边界加1,从而减小数列和。
当我们的数列和恰好等于所给的sum时,保存当前左边界到有边界中所有的正数,作为一个解,将right加1,继续取寻找解。
下面我们以15为sum,看一下数列中左右边界的变换情况。
程序:
C++
class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum) {
if(sum == )
return res;
int left = ;
int right = ;
while(left < right){
if((left + right) *(right - left + ) / == sum){
vector<int> temp;
for(int i = left; i <= right; ++i)
temp.push_back(i);
res.push_back(temp);
right++;
}
else if((left + right) *(right - left + ) / > sum){
left++;
}
else{
right++;
}
}
return res;
}
private:
vector<vector<int> > res;
};
Java
import java.util.ArrayList;
public class Solution {
public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
if(sum == 0)
return res;
int left = 1;
int right = 2;
while(left < right) {
int arraySum = (left + right) * (right - left + 1) / 2;
if(arraySum == sum) {
ArrayList<Integer> temp = new ArrayList<>();
for(int i = left; i <= right; ++i) {
temp.add(i);
}
res.add(temp);
temp = null;
right++;
}
else if(arraySum < sum) {
right++;
}
else {
left++;
}
}
return res;
}
private ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
}
剑指Offer-41.和为S的连续正数序列(C++/Java)的更多相关文章
- 剑指Offer 41. 和为S的连续正数序列 (其他)
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- [剑指Offer] 41.和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- 【剑指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】 和为s的连续正数序列,C++实现
原创博文,转载请注明出处! # 题目 # 思路 设置两个辅助变量small和big,small表示序列的最小值,big表示序列的最大值.如果sum(small ~ big) > s,则增大sma ...
- 【剑指offer】和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- 剑指offer:和为S的连续正数序列
题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...
随机推荐
- nyoj 803-A/B Problem
803-A/B Problem 内存限制:64MB 时间限制:1000ms 特判: No 通过数:2 提交数:4 难度:3 题目描述: 做了A+B Problem,A/B Problem不是什么问题了 ...
- 编写 Dockerfile 最佳实践
官方仓库虽然有数十万计的免费镜像,但大多数无法直接满足公司业务需求,这就需要我们自己去定制镜像了. Docker通过Dockerfile自动构建镜像,Dockerfile是一个包含用于组建镜像的文本文 ...
- Centos7安装redis5.0.7
1. 安装依赖包 yum install -y gcc gcc-c++ 2. 下载最新版redis安装包并解压安装 cd /usr/local/src wget http://download.red ...
- HTML的footer置于页面最底部
vue项目中,使用element-ui的布局,仍然出现footer不固定页面底部的情况,网上找到的一个管用的 方法是:footer高度固定+绝对定位 <html> <head> ...
- 2019-9-18:渗透测试,基础学习,DNS HTML,笔记
DNS服务器,域名解析服务器,端口默认53,UDP协议传输,服务器作业,将域名转成ip,将ip转成域名 sql server默认端口:1433,MSSQL是sql server简写 netstat - ...
- 【NHOI2018】衰减
[解题思路] 显然这题并不难,由于数据范围较小,完全可以用DFS解决. 从原数开始每次变异的图谱,每次记录住当前的路径. 当找到1时就可以输出并回溯了. 小技巧:printf和scanf可以提高输出输 ...
- 2019 ICPC Asia Nanjing Regional K. Triangle
题目:在直角坐标系中给定 p1,p2,p3构成三角形,给定p4可能在三角形边上也可能不在, 问能不能在三角形上找出p5,使得线段p4p5,平分三角形(p4必须在三角形上).不能则输出-1. 思路:四个 ...
- 应该如何刷 LeetCode?
LeetCode 做笔记 对于遇到的每个题目,事后都做上标记:普通题目,难题.好题.此外,每个题目都分为以下几个步骤做好详细的笔记: 1. 原题目 2. 自己的第一遍解法 3. 网上好的解法 4. 自 ...
- django-ajax传输数据
AJAX简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML". 即使用Javascript语言与服务器 ...
- nginx重启后,反向代理失败之问题排查记录
问题与排查过程 本地开发环境的服务器,部署了nginx,nginx上对静态的web前端页面进行了http 80端口代理:然后呢,因为一些原因,服务器重启了,重启服务器后,我去把nginx启动起来,但是 ...