68. Pascal's Triangle II

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;
        }
    }


你可能感兴趣的:(68. Pascal's Triangle II)