Pascal's Triangle 打印Pascal三角 @LeetCode

来源:互联网 发布:windows me 系统安装 编辑:程序博客网 时间:2024/05/18 03:12

题目:

打印Pascal三角

思路:

把每一行拆成前半和后半,分别处理


这题的followup是求第k行的序列:

http://blog.csdn.net/fightforyourdream/article/details/12867865


package Level2;import java.util.ArrayList;/** * Pascal's Triangle  *  * 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 class S118 {public static void main(String[] args) {System.out.println(generate(5));}public static ArrayList<ArrayList<Integer>> generate(int numRows) {ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();int i, j;// i用来走列        for(i=0; i<numRows; i++){        ArrayList<Integer> list = new ArrayList<Integer>();        // j用来走行,先走前半行        for(j=0; j<=i/2; j++){        if(j == 0){// 对首位特殊处理            list.add(1);            }else if(i>0){// 累加前面结果            list.add(ret.get(i-1).get(j-1)+ret.get(i-1).get(j));            }        }        // j再走后半行        for(; j<=i; j++){        if(j == i){// 对末位特殊处理        list.add(1);        }else if(i>0){// 累加前面结果        list.add(ret.get(i-1).get(j-1)+ret.get(i-1).get(j));        }        }        ret.add(list);        }        return ret;    }}


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



原创粉丝点击