码迷,mamicode.com
首页 > 其他好文 > 详细

118. Pascal's Triangle

时间:2016-06-23 12:35:11      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

题目:

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

标签:

原文地址:http://www.cnblogs.com/panini/p/5610167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!