Friday, May 11, 2018

[2018-Interview] Pascal's Triangle

Original question: https://leetcode.com/problems/pascals-triangle/description/

My answer:


class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> result = new ArrayList<List<Integer>>(numRows);
        if (numRows < 1) {
            return result;
        }
        List<Integer> firstRow = new ArrayList<Integer>();
        firstRow.add(1);
        result.add(firstRow);
        List<Integer> lastRow = new ArrayList<Integer>();
        lastRow.addAll(firstRow);
        for (int i = 2; i <= numRows; i ++) {
            List<Integer> nextRow = helper(lastRow);
            result.add(nextRow);
            lastRow.clear();
            lastRow.addAll(nextRow);
        }
        return result;
    }
    
    private List<Integer> helper(List<Integer> lastRow) {
        List<Integer> nextRow = new ArrayList<Integer>(lastRow.size() + 1);
        nextRow.add(1);
        for (int i = 0; i < lastRow.size() - 1; i ++) {
            int nextValue = lastRow.get(i) + lastRow.get(i + 1);
            nextRow.add(nextValue);
        }
        nextRow.add(1);
        return nextRow;
    }
}

No comments:

Post a Comment