Pascal's Triangle II
【思路】
与 leetcode: Pascal's Triangle | Java最短代码实现 不同的是,本题只需要返回一行,并且要求空间复杂度为超过 O(k),我们将每一行的结果存放在 result 结果集中,一行一行地更新:
public List getRow(int rowIndex) {List result = new ArrayList();result.add(1);for (int i = 0; i < rowIndex; i++) { //进行 rowIndex - 1 次(hang)更新for (int j = i; j > 0; j--) //利用本行的结果,更新下一行的结果result.set(j, result.get(j) + result.get(j - 1)); //下一行的第 j 个元素为上一行的第 j - 1 和第 j 个元素的和result.add(1);}return result;}
34 / 34
test cases passed. Runtime: 3 ms Your runtime beats 21.02% of javasubmissions.
【优化】
我们也可以直接根据 rowIndex 推出那一行的结果,而不需要根据前一行进行推导:
public List getRow(int rowIndex) {List ans = new ArrayList();ans.add(1);for(int i = 1; i <= rowIndex; i++)ans.add((int)(Math.round(ans.get(i - 1) * ((double)(rowIndex - i + 1) / i))));return ans;}
34 / 34
test cases passed. Runtime: 1 ms Your runtime beats 84.70% of javasubmissions.