首页 > 代码库 > [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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。