LeetCode-118.楊輝三角(java程式碼)
阿新 • • 發佈:2018-12-13
-
此處僅貼參考程式碼(程式碼可繼續調優,但平臺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; }