2014年5月8日星期四

Loop Solution - Pascal's Triangle

The idea is to build next level based on the current one… a separate method makes the coding easier.

public class Solution {
    public ArrayList<ArrayList<Integer>> generate(int numRows) {
        ArrayList<ArrayList<Integer>> results = new ArrayList<ArrayList<Integer>>();
        if(numRows == 0){
            return results;
        }
        ArrayList<Integer> oneArrayList = new ArrayList<Integer>();
        oneArrayList.add(1);
        results.add(oneArrayList);
        int i = 2;
        while(i <= numRows){
            results.add(generateEachRow(results.get(i - 2), i));
            i++;
        }
        return results;
    }
    private ArrayList<Integer> generateEachRow(ArrayList<Integer> input, int num){
        ArrayList<Integer> result = new ArrayList<Integer>();
        // if(num == 2){
        //     result.add(1);
        //     result.add(1);
        //     return result;
        // }
        // for(int i = 0; i < input.size(); i++){
        //     if(i == 0 || i == input.size() - 1){
        //         result.add(input.get(i));
        //         if(i == input.size() - 1){
        //             break;
        //         }
        //     }
        //     result.add(input.get(i) + input.get(i + 1));
        // }
        for(int i = 0; i < num; i++){
            if(i == 0 || i == num - 1){
                result.add(1);
            }else{
                result.add(input.get(i) + input.get(i - 1));
            }
        }
        return result;
    }
}

没有评论: