leetcode 生成杨辉三角形, 118 119 Pascal's Triangle 1,2

简介: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Return [ [1], [1,1], [1,2,1],...



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


解决方案:


vector<vector<int>> generate(int numRows) {
         vector<vector<int>> res = {};
        for (int i = 0; i < numRows; i++) {
            res.push_back(vector<int>(i + 1, 1));
            for(int j = 1; j < i; j++) {
                res[i][j] = (res[i - 1][j] + res[i - 1][j - 1]);
            }
        }
        return res;

    }




Pascal's Triangle II Total Accepted: 46342 Total Submissions: 157260                                   

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

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

Note:
Could you optimize your algorithm to use only O(k) extra space?


我的解决方案:

从没一行的倒数第二个算起,往前面逆推:


 vector<int> getRow(int rowIndex) 
    {
        vector<int> result(rowIndex + 1, 1);
        
        for(int i = 1; i <= rowIndex; ++i)
        {
            for(int j = i - 1; j > 0; --j)
            {
                result[j] = result[j] + result[j - 1];
            }
        }
        
        return result;
    }

递归的解决方案:


vector<int> getRow(int rowIndex) {
    vector<int> result;

    if (rowIndex == 0) {
        result.push_back(1);

        return result;
    } else {
        vector<int> vec = getRow(rowIndex - 1);
        result.push_back(1);
        for (size_t i = 0; i < vec.size() - 1; i++) {
            result.push_back(vec[i] + vec[i+1]);
        }
        result.push_back(1);
    }
}



python 解决方案:

class Solution:
# @param {integer} rowIndex
# @return {integer[]}
def getRow(self, rowIndex):
    row = [1]
    for i in range(1, rowIndex+1):
        row = list(map(lambda x,y: x+y, [0]+row, row + [0]))
    return row


相关文章
|
6月前
|
索引
leetcode-119:杨辉三角 II
leetcode-119:杨辉三角 II
58 0
|
3月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
49 6
|
3月前
|
Python
【Leetcode刷题Python】120. 三角形最小路径和
LeetCode 120题 "三角形最小路径和" 的Python实现,使用动态规划算法找出从三角形顶部到底部的最小路径和。
20 0
|
3月前
|
Python
【Leetcode刷题Python】611. 有效三角形的个数
提供了解决LeetCode "有效三角形的个数" 问题的Python实现代码。
17 0
|
5月前
【LeetCode刷题】有效三角形个数、查找总价值为目标值的两个商品
【LeetCode刷题】有效三角形个数、查找总价值为目标值的两个商品
|
5月前
|
存储 算法 数据可视化
LeetCode 题目 120:三角形最小路径和
LeetCode 题目 120:三角形最小路径和
|
5月前
|
存储 SQL 算法
LeetCode 题目 118:杨辉三角
LeetCode 题目 118:杨辉三角
|
6月前
leetcode代码记录(杨辉三角
leetcode代码记录(杨辉三角
37 1
|
6月前
|
算法
【优选算法】——Leetcode——611. 有效三角形的个数
【优选算法】——Leetcode——611. 有效三角形的个数