118. Pascal's Triangle
Posted panini
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了118. Pascal's Triangle相关的知识,希望对你有一定的参考价值。
题目:
Given numRows, generate the first numRows of Pascal‘s triangle.
For example, given numRows = 5,
Return
[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
链接: http://leetcode.com/problems/pascals-triangle/
一刷,这道题简单却解得并不好。
- 首先问题是numRows和range(N)时上限的考虑,因为range从0开始,所以要range(numRows - 1)
- list.reverse()是in place的,reversed(list)返回值是新的 list
- cur = cur.extend(second_half)返回的是None!!! cur.extend(second_half)就够了,这种错误平时根本不可能犯,太低级
- numRows == 1是否作为特殊例子返回
有一个总结似乎可以避免4),经常我会用prev, cur两个list,如果只用一个的话似乎可以少判断一次边界情况。
1 class Solution(object): 2 def generate(self, numRows): 3 if numRows == 0: 4 return [] 5 if numRows == 1: 6 return [[1]] 7 result = [[1]] 8 prev = [1] 9 cur = [] 10 11 for row in range(numRows - 1): 12 cur.append(1) 13 for idx in range(row / 2): 14 cur.append(prev[idx] + prev[idx + 1]) 15 second_half = reversed(cur) 16 if row % 2: 17 cur.append(prev[row / 2] + prev[row / 2 + 1]) 18 cur.extend(second_half) 19 result.append(cur) 20 prev, cur = cur, [] 21 return result
以上是关于118. Pascal's Triangle的主要内容,如果未能解决你的问题,请参考以下文章