和为S的连续正整数序列

package wangChaoPA实习工作练习.com.剑指offer;
import java.util.ArrayList;
/*
 * 解题思路:因为是连续的,所以利用大小数进行解答 如果从little到big的和等于sum
 * 保存little到big值到list中然后,little++,big++ 如果从little到big的和小于sum big++
 * 如果从little到big的大等sum little++
 */
public class 和为S的连续正整数序列
{
    public ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum)
    {
        ArrayList<ArrayList<Integer>> resList = new ArrayList<ArrayList<Integer>>();
        if (sum < 3)
        {
            return resList;
        }
        int little = 1;
        int big = 2;
        // little最大只能为sum的一半
        while (little <= sum / 2)
        {
            int tempSum = sumOflittleToBig(little, big);
            if (tempSum == sum)
            {
                ArrayList<Integer> list = new ArrayList<Integer>();
                for (int i = little; i <= big; i++)
                {
                    list.add(i);
                }
                resList.add(list);
                little++;
                big++;
            }
            else if (tempSum < sum)
            {
                big++;
            }
            else
            {
                little++;
            }
        }
        return resList;
    }

private int sumOflittleToBig(int little, int big)
    {
        int sum = 0;
        for (int i = little; i <= big; i++)
        {
            sum += i;
        }
        return sum;
    }
}

时间: 2024-08-02 16:22:54

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

26.打印所有和为S的连续正整数序列

http://zhedahht.blog.163.com/blog/static/25411174200732711051101 题目: 输入一个正数n,输出所有和为n连续正数序列.例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5.4-6和7-8. 分析: 这是网易的一道面试题.这道题和本面试题系列的第10题有些类似.我们用两个数small和big分别表示序列的最小值和最大值.首先把small初始化为1,big初始化为2.如果从small到big的序列的

编程算法 - 和为s的连续正整数序列 代码(C)

和为s的连续正整数序列 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个正数s, 打印出所有和为s的连续正数序列(至少含有两个数). 起始于1, 2, 相加, 如果相等则返回, 如果小于, 则前端递增右移, 如果大于, 则后端递增右移, 一直到后端移动到s的一半位置. 因为两个数, 小数为一半, 大数为一半加一, 则必然结束. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author:

算法 - 求和为n的连续正整数序列(C++)

//**************************************************************************************************** // // 求和为n的连续正整数序列 - C++ - by Chimomo // // 题目: 输入一个正整数n,输出所有和为n的连续正整数序列.例如:输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5.4-6和7-8. // // Answer: Supp

C++初学者---根据输入的任何一个正整数,输出可能被表示的连续正整数

题目描述:一个正整数有可能可以被表示为 n(>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列. 输入数据:一个正整数,以命令行参数的形式提供给程序. 输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始.以从小到大的顺序打印.如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列.此外,序列不允许重复,序列内的整数用

递增数列中和为s的两个数字,和为s的连续正数序列

1 和为s的两个数,利用begin,end两个位置标志和为s前后两个元素,当和大于s,end前移,和小于s,begin后移 vector<int> FindNumbersWithSum(vector<int> array,int sum) { 2 vector<int>res; 3 if(array.size()==0) 4 return res; 5 bool found=false; 6 int cursum=0; 7 int begin=0; 8 int end=

连续正整数之和(华东师范大学OJ-3025)

题目描述:一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列. 输入数据:一个正整数,以命令行参数的形式提供给程序. 输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始.以从小到大的顺序打印.如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列.此外,序列不允许重复,序列内的整数

LeetCode——面试题57 - II. 和为s的连续正数序列

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数). 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列. 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 2: 输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]] 限制: 1 <= target <= 10^5 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/he

菜鸟系列 Golang 实战 Leetcode —— 面试题57 - II. 和为s的连续正数序列

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数). 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列. ? 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 2: 输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]] ? 限制: 1 <= target <= 10^5 题解1: 采用滑动窗口,设置左右两个指针,如果sum为target,则保存双指针内的值,如果sum&

找出一段连续的正整数序列中重复(或缺失)的那个数

有这样一个简单的问题:给定n-m+2(或n-m)个正整数组成的乱序序列,其元素是m到n(n>m>=1)中的互不相同的正整数,有且只有一个是重复(或缺失)的.如何找到那个数?(这里假定缺失的数不是n或m) 由Ivony提出的异或算法想到的. 1.由于[m,n]这段闭区间的异或算法暂时没有想到,所以就用[1,m-1]^[1,n]来间接得出[m,n]这段闭区间的异或. 2.求出待求数组的异或,将此结果再与上面[m,n]的异或结果再次异或,即可得到那唯一的一个重复数(或缺失的那个数) 1 using