-
关于杨辉三角:
baidubaike-杨辉三角 -
此处仅贴参考代码(代码可继续调优,但平台Accepted了,留点思考空间~)
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> list = new ArrayList<List<Integer>>() ;
for(int i=1;i<=numRows;i++) {
Integer num; //用于记录第 i 行第 j 个数的值
List<Integer> tmpList = new ArrayList<Integer>();
for(int j=1;j<=i;j++) {
num = pac(i-1,j-1); //计算第 i 行第 j 个数的值--->排列组合法
tmpList.add(num);
}
list.add(tmpList); //将第 i 行的 i 个数的 tmpList 存到 List 空间
}
return list;
}
public Integer pac(int i,int j) { //计算排列组合C(i)(j)
BigInteger denominator = new BigInteger("1"); //分子
BigInteger molecule=new BigInteger("1"); //分母
int time = j; //执行次数
if((i==0) || (j==0) || (i==j)) //杨辉三角的两侧都是 1
return 1;
for(int k=0;k<time;k++) {
denominator = denominator.multiply(new BigInteger(String.valueOf(i)));
molecule = molecule.multiply(new BigInteger(String.valueOf(j)));
i--;
j--;
}
Integer return_num = Integer.parseInt(String.valueOf(denominator.divide(molecule)));
return return_num;
}