标签:leetcode
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
标签:leetcode
原文地址:http://7371901.blog.51cto.com/7361901/1599802