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/

一刷,这道题简单却解得并不好。

  1. 首先问题是numRows和range(N)时上限的考虑,因为range从0开始,所以要range(numRows - 1)
  2. list.reverse()是in place的,reversed(list)返回值是新的 list
  3. cur = cur.extend(second_half)返回的是None!!! cur.extend(second_half)就够了,这种错误平时根本不可能犯,太低级
  4. 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的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode_118. Pascal's Triangle

118. Pascal's Triangle

118. Pascal's Triangle

118. Pascal's Triangle@python

118. Pascal's Triangle

118. Pascal's Triangle