Leetcode - Pascal's Triangle

Leetcode - Pascal's Triangle_第1张图片
Paste_Image.png

My code:

import java.util.ArrayList;
import java.util.List;

public class Solution {
    public List> generate(int numRows) {
        List> result = new ArrayList>();
        if (numRows <= 0)
            return result;
        
        List newList = new ArrayList();
        newList.add(1);
        result.add(newList);
        if (numRows == 1)
            return result;
        
        newList = new ArrayList();
        newList.add(1);
        newList.add(1);
        result.add(newList);
        if (numRows == 2)
            return result;
        
        
        int[] number = new int[numRows];
        number[0] = 1;
        number[1] = 1;
        for (int i = 3; i <= numRows; i++) {
            int[] newNumber = new int[numRows];
            newList = new ArrayList();
            for (int j = 0; j < i; j++) {
                if (j == 0) {
                    newList.add(1);
                    newNumber[j] = 1;
                }
                else if (j == i - 1) {
                    newList.add(1);
                    newNumber[j] = 1;
                }
                else {
                    newList.add(number[j - 1] + number[j]);
                    newNumber[j] = number[j - 1] + number[j];
                }
            }
            number = newNumber;
            result.add(newList);
        }
        return result;
    }
    
    public static void main(String[] args) {
        Solution test = new Solution();
        System.out.println(test.generate(5));
    }
}

My test result:

Leetcode - Pascal's Triangle_第2张图片

这次作业不是很难,就是Array操作。

**
总结:终于到40题了。其实,如果一开始刷简单题,那么很快就能冲到80题。但我还是稳扎稳打吧。
**
Anyway, Good luck, Richardo!

My code:

public class Solution {
    public List> generate(int numRows) {
        ArrayList> ret = new ArrayList>();
        if (numRows <= 0)
            return ret;
        ArrayList tri = new ArrayList();
        tri.add(1);
        ret.add(tri);
        for (int i = 1; i < numRows; i++) {
            tri = new ArrayList();
            tri.add(1);
            for (int j = 1; j < i; j++) {
                List upTri = ret.get(i - 1);
                tri.add(upTri.get(j - 1) + upTri.get(j));
            }
            tri.add(1);
            ret.add(tri);
        }
        return ret;
    }
}

这次代码写的比上次简单多了。简单题。
我记得有道题,也是这样的三角形,然后要求从顶端到底部的和最小值。我还记得解法的。

Anyway, Good luck, Richardo!

你可能感兴趣的:(Leetcode - Pascal's Triangle)