[leetcode]Pascal's Triangle

题目描述如下:

Given numRows, generate the first numRows of Pascal’s triangle.

For example, given numRows = 5,

Return

[leetcode]Pascal's Triangle_第1张图片

最简单的杨辉三角,一遍AC:

public class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> reslist = new ArrayList<List<Integer>>();
        int i, j;
        if(numRows == 0) return reslist;
        if(numRows == 1){
            List<Integer> list = new ArrayList<Integer>();
            list.add(1);
            reslist.add(list);
        }else if(numRows == 2){
            List<Integer> list1 = new ArrayList<Integer>();
            list1.add(1);
            reslist.add(list1);
            List<Integer> list2 = new ArrayList<Integer>();
            for(i = 0; i < 2; i++)
                list2.add(1);
            reslist.add(list2);
        }else{
            List<Integer> list1 = new ArrayList<Integer>();
            list1.add(1);
            reslist.add(list1);
            List<Integer> list2 = new ArrayList<Integer>();
            for(i = 0; i < 2; i++)
                list2.add(1);
            reslist.add(list2);
            for(i = 2; i < numRows; i++){
                List<Integer> list = new ArrayList<Integer>();
                List<Integer> tmp = reslist.get(i - 1);
                list.add(1);
                for(j = 0; j < tmp.size() - 1; j++){
                    list.add(tmp.get(j) + tmp.get(j + 1));
                }
                list.add(1);
                reslist.add(list);
            }
        }
        return reslist;
    }
}

觉得这代码实在是太过于丑陋,于是重构:

public class Solution {
    public List<List<Integer>> generate(int numRows) {
         List<List<Integer>> reslist = new ArrayList<List<Integer>>();
        int i, j;
        if(numRows == 0) return reslist;
        for(i = 0; i < numRows; i++){
            List<Integer> list = new ArrayList<Integer>();
            for(j = 0; j < i + 1; j++){
                if(j == 0 || j == i)
                    list.add(1);
                else{
                    list.add(reslist.get(i - 1).get(j - 1) + reslist.get(i - 1).get(j));
                }
            }
            reslist.add(list);
        }
        return reslist;
    }
}

顿时神清气爽了许多有没有~~

题目链接:https://leetcode.com/problems/pascals-triangle/

你可能感兴趣的:(LeetCode)