zoukankan      html  css  js  c++  java
  • LeetCode: Pascal's Triangle I && II

    Title:

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

    递归:
    class Solution {
    public:
        vector<vector<int> > results;
        vector<vector<int>> generate(int numRows) {
            if (numRows < 1)
                return results;
            maker(numRows);
            return results;
        }
        
        void maker(int numRows){
            vector<int> cur;
            cur.push_back(1);
            if (numRows == 2){
                maker(numRows-1);
                cur.push_back(1);
            }
            else if (numRows > 2){
                maker(numRows-1);
                vector<int> pre = results[numRows-2];
                for (int i = 0 ; i < pre.size()-1; i++){
                    cur.push_back(pre[i]+pre[i+1]);
                }
                cur.push_back(1);
            }
            results.push_back(cur);
        }
    };

    非递归
    class Solution {
    public:
        vector<vector<int> > results;
        vector<vector<int>> generate(int numRows) {
            if (numRows < 1)
                return results;
            vector<int> result;
            result.push_back(1);
            results.push_back(result);
            for (int i = 2; i <= numRows; i++){
                vector<int> pre = results[i-2];
                vector<int> cur;
                cur.push_back(1);
                for (int j = 0; j < pre.size()-1; j++){
                    cur.push_back(pre[j]+pre[j+1]);
                }
                cur.push_back(1);
                results.push_back(cur);
            }
            return results;
        }
    };

    Title:

    Given an index k, return the kth row of the Pascal's triangle.

    For example, given k = 3,
    Return [1,3,3,1].

    思路:使用滚动数组

    class Solution {
    public:
        vector<int> getRow(int rowIndex) {
            vector<int> result;
            if (rowIndex < 0)
                return result;
         
            result.push_back(1);
        
            for (int i = 0; i < rowIndex ; i++){
                vector<int> cur;
                cur.push_back(1);
                for (int j = 0 ; j < result.size()-1; j++){
                    cur.push_back(result[j]+result[j+1]);
                }
                cur.push_back(1);
                result = cur;
            }
            return result;
        }
    };
  • 相关阅读:
    Android 之 Android目录
    Android之新建项目
    Android 所遇问题(一)
    Android运行机制
    C#编程语法积累(二)
    C#编程的语法积累(一)
    MVC4.0网站发布
    SQLServer 之 树查询
    Linux回收站[改写rm防止误删文件无法恢复]
    音视频同步(播放)原理
  • 原文地址:https://www.cnblogs.com/yxzfscg/p/4505429.html
Copyright © 2011-2022 走看看