您的位置:首页 > 其它

leetcode 119.Pascal's Triangle II-杨辉三角形

2016-04-23 19:55 369 查看
原题链接:Pascal's Triangle II
【思路】

leetcode: Pascal's Triangle | Java最短代码实现 不同的是,本题只需要返回一行,并且要求空间复杂度为超过 O(k),我们将每一行的结果存放在
result 结果集中,一行一行地更新:

public List<Integer> getRow(int rowIndex) {
List<Integer> result = new ArrayList<Integer>();
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<Integer> getRow(int rowIndex) {
List<Integer> 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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: