68. Pascal's Triangle II

来源:互联网 发布:如何下载bilbil软件 编辑:程序博客网 时间:2024/05/20 00:48

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

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

分析:输出指定的第k行的杨辉三角上的值。(从第0行开始算起).k为负数时返回1.注意,在写代码的过程中要保存上一行的值以用于下一行的计算。还有,要注意新建list对象,以免被后面的值给覆盖。

/** * 用额外的空间保存所有行上的值。  */public List<Integer> getRow(int rowIndex) {List<List<Integer>> list = new ArrayList();List<Integer> rowlist = null;/*表示上一行的元素*/List<Integer> newrowlist = null;/*表示当前需要求的那一行的元素*/if(rowIndex <=0){newrowlist = new ArrayList();        newrowlist.add(1);        list.add(newrowlist);return newrowlist;}else {        int oldsize = list.size();        newrowlist = new ArrayList();        newrowlist.add(1);        list.add(newrowlist);        oldsize = list.size();        for(int i=oldsize;i<=rowIndex;i++){        rowlist=list.get(i-1);        newrowlist = new ArrayList();        newrowlist.add(1);        for(int j=1;j<i;j++){/*依次计算当前行中的元素的值*/        int num = rowlist.get(j-1)+rowlist.get(j);        newrowlist.add(num);        }        newrowlist.add(1);        list.add(newrowlist);        }        return newrowlist;        }    }/** * 用额外的空间只保存上一行和当前行。 */public List<Integer> getRow2(int rowIndex) {List<Integer> rowlist = null;/*表示上一行的元素*/List<Integer> newrowlist = null;/*表示当前需要求的那一行的元素*/if(rowIndex <=0){newrowlist = new ArrayList();        newrowlist.add(1);return newrowlist;}else {        newrowlist = new ArrayList();        newrowlist.add(1);        for(int i=1;i<=rowIndex;i++){        rowlist=newrowlist;        newrowlist = new ArrayList();        newrowlist.add(1);        for(int j=1;j<i;j++){/*依次计算当前行中的元素的值*/        int num = rowlist.get(j-1)+rowlist.get(j);        newrowlist.add(num);        }        newrowlist.add(1);        }        return newrowlist;        }    }


0 0
原创粉丝点击