leetcode java 楊輝三角

簡介

  1. 楊輝三角

是一道簡單題,可以通過類似一層推下一層的方式進行計算,但是好像看過一個題解, 採用的方式是組合數。本來想採用組合數,嘗試了double溢出
嘗試了long 溢出,嘗試了BigDecimal leetcode 不識別,無奈之下嘗試使用數組的方式並進行延遲計算的方式;

code

class Solution {
    public ArrayList<Integer> factorial(Integer index) {
        if(index == 0) return new ArrayList<>(){{add(1);}};
        ArrayList<Integer>  sum = new ArrayList<>();

        for(int i=1; i<=index; i++){
            sum.add(i);
        }
        return sum;
    }
    public long combination(Integer index, Integer num) {
        ArrayList<Integer> r = factorial(num);
        ArrayList<Integer> a = factorial(index > (num - index) ? index : num - index);
        ArrayList<Integer> t = factorial(index > (num - index) ? num - index : index);
        for (int i = 1; i < a.size(); i++) {
            if(r.get(i) == a.get(i)) {
                r.set(i, 1);
            }
        }

        long sum = 1;
        for (int i = 0; i < r.size(); i++) {
            sum *= r.get(i);
        }
        for (int i = 1; i < t.size(); i++) {
            sum /= t.get(i);
        }
        return sum;
    }
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> rlt = new ArrayList<>();
        for(int i=0; i<numRows; i++){
            List<Integer> row = new ArrayList<>();
            for(int j=0; j<= i; j++){
                long a = combination(j,i);

                row.add((int)a);
            }
            rlt.add(row);
        }
        return rlt;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章