首页 > 代码库 > [LeetCode]119 Pascal's Triangle II

[LeetCode]119 Pascal's Triangle II

https://oj.leetcode.com/problems/pascals-triangle-ii/

http://blog.csdn.net/linhuanmars/article/details/23311629

public class Solution {
    public List<Integer> getRow(int rowIndex) 
    {
        // Solution A:
        // return getRow_OKSpace(rowIndex);
        
        // Solution B:
        return getRow_ExtraList(rowIndex);
    }
    
    /////////////////////////
    // Solution A: OKSpace
    //
    private List<Integer> getRow_OKSpace(int rowIndex)
    {
        if (rowIndex < 0)
            return null;
            
        // 直接计算每个位置的值,
        // 但是在计算单个位置的值时,需要迭代
        List<Integer> toReturn = new ArrayList<>(rowIndex + 1);
        for (int i = 0 ; i <= rowIndex ; i ++)
        {
            toReturn.add(val(rowIndex, i));
        }
        return toReturn;
    }
    
    // Calculate the value of row r, index i.
    // row and index are 0 based.
    // Recursive
    private int val(int r, int i)
    {
        // Out case
        if (i < 0 || i > r)
            return 0;
        
        // first row
        if (r == 1)
            return 1;
        
        else return val(r - 1, i - 1) + val(r - 1, i);
    }
    
    //////////////////////
    // Solution B: ExtraList
    //
    public List<Integer> getRow_ExtraList(int rowIndex)
    {
        if (rowIndex < 0)
            return null;
        
        List<Integer> toReturn = Collections.singletonList(1);
        for (int i = 0 ; i < rowIndex ; i ++)
        {
            toReturn = getRow(toReturn);
        }
        return toReturn;
    }
    
    private List<Integer> getRow(List<Integer> lastRow)
    {
        int len = lastRow.size() + 1;
        List<Integer> toReturn = new ArrayList<>(len);
        for (int i = 0 ; i < len ; i ++)
        {
            int a = i - 1 < 0 ? 0 : lastRow.get(i - 1);
            int b = i == len - 1 ? 0 : lastRow.get(i);
            toReturn.add(a + b);
        }
        return toReturn;
    }
}


[LeetCode]119 Pascal's Triangle II