LeetCode-118.杨辉三角(java代码)

  1. 关于杨辉三角:
    baidubaike-杨辉三角

  2. 此处仅贴参考代码(代码可继续调优,但平台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;
	}

猜你喜欢

转载自blog.csdn.net/AwayFuture/article/details/82933158
今日推荐