zoukankan      html  css  js  c++  java
  • LeetCode(118):杨辉三角

    Easy!

    题目描述:

    给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

    在杨辉三角中,每个数是它左上方和右上方的数的和。

    示例:

    输入: 5
    输出:
    [
         [1],
        [1,1],
       [1,2,1],
      [1,3,3,1],
     [1,4,6,4,1]
    ]

    解题思路:

    杨辉三角是二项式系数的一种写法,如果熟悉杨辉三角的五个性质,那么很好生成,可参见http://www.cnblogs.com/grandyang/p/4031536.html,具体生成算法:每一行的首个和结尾一个数字都是1,从第三行开始,中间的每个数字都是上一行的左右两个数字之和。

    C++解法一:

     1 class Solution {
     2 public:
     3     vector<vector<int> > generate(int numRows) {
     4         vector<vector<int> > res;
     5         if (numRows <= 0) return res;
     6         res.assign(numRows, vector<int>(1));
     7         for (int i = 0; i < numRows; ++i) {
     8             res[i][0] = 1;
     9             if (i == 0) continue;
    10             for (int j = 1; j < i; ++j) {
    11                 res[i].push_back(res[i-1][j] + res[i-1][j-1]);
    12             }
    13             res[i].push_back(1);
    14         }
    15         return res;
    16     }
    17 };
  • 相关阅读:
    POJ 1936 All in All
    POJ 2305 Basic remains
    POJ 2081 Recaman's Sequence
    MFC MDI 窗口函数执行顺序
    decompose
    不新建一个文档
    code mistake
    ...
    paper
    stereo
  • 原文地址:https://www.cnblogs.com/ariel-dreamland/p/9165778.html
Copyright © 2011-2022 走看看