简介
- 杨辉三角
是一道简单题,可以通过类似一层推下一层的方式进行计算,但是好像看过一个题解, 采用的方式是组合数。本来想采用组合数,尝试了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;
}
}
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》