Sunday, February 9, 2014

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].
Note:
Could you optimize your algorithm to use only O(k) extra space?

Solution:
Basic implementation question.

public class Solution {
    public ArrayList getRow(int rowIndex) {
        ArrayList result = new ArrayList();
        ArrayList prev = new ArrayList();
        result.add(1);
        if(rowIndex == 0) return result;
        result.add(1);
        if(rowIndex == 1) return result;
        prev = (ArrayList)result.clone();   // use clone for ArrayList copy
        result.clear();
        for(int i = 2; i <= rowIndex; i++){
            result.add(1);
            for(int j = 1; j <= prev.size()-1; j++){
                result.add(prev.get(j) + prev.get(j-1));
            }
            result.add(1);
            prev = (ArrayList)result.clone();
            if(i!=rowIndex) result.clear();
        }
        return result;
    }
}

No comments:

Post a Comment