当前位置:   article > 正文

和为S的连续序列_生旦净末灰

生旦净末灰

和为S的连续序列

序列长度范围是2~length-2,遍历长度,并且求此长度时序列的均值,然年根据均值和序列数量展开序列

  • 注意:需要判断左边是否越界,e.g.[-1,0,1,2,3,4]
import java.util.ArrayList;
public class Solution {
    //自己发明的方法
        public ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum) {
                ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
                if (sum < 2)
                        return list;
                //mid均值
                double mid = 0;
            //可能的数量是2~sum-1个
                for (int i = sum-1; i >= 2; i--) {
                    //当连续数列个数是i时,mid均值
                        mid = (double)sum / i;
                        
                    //为了保证不越界,保证不出现负数,左边必须大于0
                    //[-1,0,1,2,3,4]
                        if (mid *2 < i)
                                continue;
                    //均值是0.5倍数,且个数是偶数个,或者,均值整数且奇数个,找到了
                    //我他妈怎么想出的这方法!牛逼!
                        if ((mid % 1 == 0.5 && i % 2 == 0) || (mid % 1 == 0 && i % 2 == 1)){
                            System.out.println(mid%1);

                                list.add(help(mid, i));
                        }
                }
                return list;
        }
        //添加均值为mid的i个数
        private ArrayList<Integer> help(double mid, int i) {
                ArrayList<Integer> l = new ArrayList<Integer>();
                int c = (int) Math.ceil(mid - i / 2);
                for (int j = c; j < i+c; j++) {
                    System.out.println(j);
                        l.add(j);
                }
                return l;
        }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号