zoukankan      html  css  js  c++  java
  • 和为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;
        }
    }

  • 相关阅读:
    7进程、线程、协程
    架构
    5oop面向对象编程
    2流程控制
    redis
    1HTML
    3.函数、递归、模块
    2、变量、数据类型、运算符、流程控制
    一个小公司的性能测试工程师应该如何开展工作
    程序代码调优工具perf学习记录
  • 原文地址:https://www.cnblogs.com/qingtianBKY/p/7203476.html
Copyright © 2011-2022 走看看