剑指offer系列之41:和为s的连续整数序列
来源:互联网 发布:sql什么意思 编辑:程序博客网 时间:2024/05/22 01:52
题目描述:输入一个整数s,输出所有的和为s的连续整数序列。
思路:该题和“和为s的两个整数”思路一样,考虑用两个数small和big来表示序列的最小值和最大值,首先把small初始化为1,big初始化为2,如果从small到big的序列的和大于s,可以从序列中去掉较小的值,把small加1,如果从small到big的序列的和小于s,增大big使序列包含更多的元素。因为序列中至少要含有两个数字,可以一直增加到small等于(1+s)/2为止。
import java.util.ArrayList;public class Solution { public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) { ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); if(sum < 3){ return result; } int small = 1; int big = 2; int middle = (1+sum)/2; int curSum = small+big; ArrayList<Integer> list = null; while(small < middle){ if(curSum == sum){ list = new ArrayList<Integer>(); for(int i = small;i <= big;i++){ list.add(i); } result.add(list); } while(curSum > sum && small < middle){ curSum = curSum - small; small++; if(curSum == sum){ list = new ArrayList<Integer>(); for(int i = small;i <= big;i++){ list.add(i); } result.add(list); } } big++; curSum = curSum + big; } return result; }}
0 0
- 剑指offer系列之41:和为s的连续整数序列
- 动态规划 解决打印所有和为s的连续整数序列 剑指offer 之 面试题41_2
- 二分法解决打印所有和为s的连续整数序列 剑指offer 之 面试题41_2
- 《剑指offer》:[41-1]和为S的连续整数序列
- 剑指offer系列之四十:和为S的连续正数序列
- 剑指offer 之 和为S的连续正数序列
- 剑指offer 面试题41 递增数组中和为s的两个数字 | 和为s的连续整数序列
- 【剑指offer-解题系列(41)】和为S的连续正数序列
- 剑指offer 41 和为S的连续正数序列
- 《剑指offer》——和为s的连续整数序列
- 剑指offer-41.和为s的两个整数以及和为s的连续正数序列
- 剑指offer之面试题41和为s的两个数字VS和为s的连续正数序列
- 和为s的连续整数序列
- 剑指offer系列源码-和为S的连续正数序列
- 【剑指offer-解题系列(42)】和为S的连续正数序列
- 剑指offer 41 - 和为s的两个数字VS为s的连续正数序列
- 【剑指offer】Q41:和为s的连续正数序列
- 剑指offer--和为S的连续正数序列
- Python 邮件发送smtplib
- Codeforces Round #303 (Div. 2)-C. Woodcutters(模拟)
- HTTP Content-type
- HttpClient介绍
- linux 字符驱动
- 剑指offer系列之41:和为s的连续整数序列
- svn学习笔记
- 三大缓存框架ehcache、memcache和redis的介绍
- 读书笔记之安卓控件架构与自定义详解
- ensureCapacity arraylist的扩容
- 当产品没有USB,没有网卡时怎么调试linux 驱动/应用程序?
- 游戏中的武器类
- 简易kmeans-c++版本
- 自定义组合控件--来自布局