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

[LeetCode]Pascal's Triangle

时间:2014-06-15 06:33:57      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   color   

Description:

 

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]
]

 

中文描述:

给出numRows,生成Pascal三角形的前numRows行。

比如给出numRows= 5, 那么返回:

 

[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

 

解答:

刚开始看到这道题目,觉得有简便方法可循,但是无法找出规律= =

于是只好brute force。

按照定义:

第一行只有一个数:1;

第二行有两个数:1,1;

从第三行开始的第n行中,共有n个数。首尾两个数为1,而第i个数( 1 < i < n )的值,则为第n-1行中第i-1个数与第i个数相加的和,用数学公式表达为:

N[i] = N[i-1] + N[i]。

注意,这里的i指的是个数,从1开始计数;不要和数组的下标弄混了。

这个算法的时间为O(n2)

 

 

 1 class Solution {
 2 public:
 3     vector<vector<int> > generate(int numRows) {
 4         
 5         if( numRows <= 0 ) {
 6             vector<vector<int>> r;
 7             return r;
 8         }
 9         
10         vector<vector<int>> result;
11         vector<int> last;
12         if( numRows == 1 ) {
13             last.push_back( 1 );
14             result.push_back( last );
15             return result;
16         }
17         
18         for( int i = 1; i <= numRows; i++ ) {
19             vector<int> row;
20             
21             row.push_back( 1 );
22             if( i == 1 ) {
23                 result.push_back( row );
24                 continue;
25             }
26             
27             if( i == 2 ) {
28                 row.push_back( 1 );
29                 last = row;
30                 result.push_back( row );
31                 continue;
32             }
33             
34             if( i >= 3 ) {
35                 for( int j = 1; j < i -1; j++ ) {
36                     int tmp = last[j-1] + last[j];
37                     row.push_back( tmp );
38                 }
39                 
40                 row.push_back( 1 );
41             }
42             
43             last = row;
44             result.push_back( row );
45         }
46         
47         return result;
48     }
49 };

 

[LeetCode]Pascal's Triangle,布布扣,bubuko.com

[LeetCode]Pascal's Triangle

标签:des   style   class   blog   code   color   

原文地址:http://www.cnblogs.com/TheLeaf-2010/p/3785872.html

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