[LeetCode]--119. Pascal's Triangle II

来源:互联网 发布:crm软件系统 编辑:程序博客网 时间:2024/06/16 06:46

Given an index k, return the kth row of the Pascal’s triangle.

For example, given k = 3,
Return [1,3,3,1].

Note:
Could you optimize your algorithm to use only O(k) extra space?

public List<Integer> getRow(int rowIndex) {        List<Integer> list = new ArrayList<Integer>();        List<List<Integer>> resultList = new ArrayList<List<Integer>>();        int[][] temp = new int[rowIndex + 1][rowIndex + 1];        for (int i = 0; i < rowIndex + 1; 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.get(rowIndex);    }

我开辟了两倍的空间,因为有一半没用山,这种也通过了,后来想着用一倍空间也能完成。

public List<Integer> getRow(int rowIndex) {        List<Integer> list = new ArrayList<Integer>();        rowIndex++;        list.add(1);        for (int i = 1; i < rowIndex; i++) {            List<Integer> temp = new ArrayList<Integer>(i + 1);            //这里记住了,一定要进行初始化,然后set会出错            for (int j = 0; j < i + 1; j++)                temp.add(-1);            temp.set(0, list.get(0));            temp.set(i, list.get(i - 1));            for (int j = 1; j < i; j++)                temp.set(j, list.get(j - 1) + list.get(j));            list = temp;        }        return list;    }
0 0
原创粉丝点击