赞
踩
序列长度范围是2~length-2,遍历长度,并且求此长度时序列的均值,然年根据均值和序列数量展开序列
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; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。