41、和为S的连续正数序列

一、题目

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

二、解法

 1 import java.util.ArrayList;
 2 public class Solution {
 3     public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
 4         ArrayList<ArrayList<Integer>> al = new ArrayList<ArrayList<Integer>>();
 5          if(sum<3)
 6              return al;
 7          int small = 1;//小值
 8          int big = 2;//大值
 9          int middle = (sum+1)/2;//中间值
10          int curSum = small+big;
11          while(small < middle){
12              //循环直到小于sum
13              while(curSum < sum){
14                  big++;
15                  curSum += big;
16              }
17              //如果等于sum 则添加到al中
18              if(curSum == sum){
19                  ArrayList<Integer> temp = new ArrayList<>();
20                  for(int i = small; i <= big; i++)
21                      temp.add(i);
22                  al.add(temp);
23              }
24              //如果大于sum 则增大small
25              curSum -= small;
26              small++;
27          }
28          return al;
29     }
30 }
时间: 2024-10-08 01:15:25

41、和为S的连续正数序列的相关文章

41和为S的连续正数序列

题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22.现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述: 输出所有和为S的连续正数序列.序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 类似于上一题的夹逼 1 import ja

[剑指Offer]41 和为S的两个数字 VS 和为S的连续正数序列

[剑指Offer]41 和为S的两个数字 VS 和为S的连续正数序列 Leetcode T1 Two Sum Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the s

剑指Offer面试题41(Java版):和为s的两个数字VS和为s的连续正数序列

题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多个数字的和等于s,输出任意一对即可. 例如输入数组{1,2,4,7,11,15}和数字15.由于4+11=15,因此输出4和11. 在面试的时候,很重要的一点是应聘者要表现出很快的反应能力.只要想到一个办法,应聘者就可以立马告诉面试官,即使这个办法不一定是最好的.比如这个问题,很多人会立即能想到O(n2)的方法,也就是先在数组中固定一个数字,再依次判断数组中其余n-1个数字与它的和是不是等于s.面试官会

牛客(41)和为S的连续正数序列

// 题目描述 // 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100. // 但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数). // 没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22.现在把问题交给你, // 你能不能也很快的找出所有和为S的连续正数序列? Good Luck! // 输出描述: // 输出所有和为S的连续正数序列.序列内按照从小至大的顺序,序列间按照开始数字从小到大的

和为S的两个数字VS和为S的连续正数序列

题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 思路:最初我们找到数组的第一个数字和最后一个数字.首先定义两个指针,第一个指针指向数组的第一个(也就是最小的)数字,第二个指针指向数组的最后一个(也就是最大的)数字.当两个数字的和大于输入的数字时,把较大的数字往前移动:当两个数字的和小于数字时,把较小的数字往后移动:当相等时,打完收工.这样扫描的顺序是从数组的两端向数组的中间扫描. #include "stdafx.

九度 和为S的连续正数序列

题目1354:和为S的连续正数序列 时间限制:2 秒 内存限制:32 兆 特殊判题:否 提交:2008 解决:622 题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22.现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输入: 输入有多组数据.

剑指Offer40 和为s的连续正数序列

1 /************************************************************************* 2 > File Name: 40_ContinuesSequenceWithSum.c 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年09月04日 星期日 15时52分42秒 6 **************************

剑指offer系列46---和为s的连续正数序列

[题目]输出所有和为S的连续正数序列.序列为:1,2,3,4,5,6,7,8................ * 序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 1 package com.exe9.offer; 2 3 /** 4 * [题目]输出所有和为S的连续正数序列.序列为:1,2,3,4,5,6,7,8................ 5 * 序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 6 * @author WGS 7 * 8 */ 9 import ja

剑指offer-和为S的连续正数序列

题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22.现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述: 输出所有和为S的连续正数序列.序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 题解: 使用map,记录sum值,从小到大