[LeetCode]--118. Pascal's Triangle

来源:互联网 发布:网络红人欲猫儿 编辑:程序博客网 时间:2024/04/29 12:21

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

For example, given numRows = 5,
Return

[  [1],  [1,1],  [1,2,1],  [1,3,3,1],  [1,4,6,4,1]]

我是用数组做的,在草稿纸上稍微画一画应该就能找到数组下标的规律。

public List<List<Integer>> generate(int numRows) {        List<Integer> list = new ArrayList<Integer>();        List<List<Integer>> resultList = new ArrayList<List<Integer>>();        int[][] temp = new int[numRows][numRows];        for (int i = 0; i < numRows; i++) {            temp[i][0] = 1;            temp[i][i] = 1;            for (int j = 0; j <= i; j++) {                if (j < i && i > 1 && j > 0)                    temp[i][j] = temp[i - 1][j - 1] + temp[i - 1][j];                list.add(temp[i][j]);            }            resultList.add(list);            list = new ArrayList<Integer>();        }        return resultList;    }

看了网上的解答:

public ArrayList<ArrayList<Integer>> generate(int numRows) {        ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>();        if (numRows == 0) {            return rst;        }        ArrayList<Integer> first = new ArrayList<Integer>();        first.add(0, 1);        rst.add(first);        for (int i = 1; i < numRows; i++) {            ArrayList<Integer> tmp = new ArrayList<Integer>(i + 1);            for (int j = 0; j < i + 1; j++){                tmp.add(-1);            }            ArrayList<Integer> prev = rst.get(i - 1);            tmp.set(0, prev.get(0));            tmp.set(i, prev.get(i - 1));            for (int j = 1; j < i; j++){                tmp.set(j, prev.get(j - 1)+prev.get(j));            }            rst.add(tmp);        }        return rst;    }

是不是还没有我的那个好,哈哈哈,一看就是三层for循环。

0 0
原创粉丝点击