美文网首页
LeetCode 119. Pascal's Triangle

LeetCode 119. Pascal's Triangle

作者: 洛丽塔的云裳 | 来源:发表于2020-04-25 16:54 被阅读0次

    0. 题目

    Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle.
    Note that the row index starts from 0.


    1. c++ 版本

    方式1: 使用递归,当前行rowIndex的内容是依赖rowIndex获取,但是递归,存在临时变量赋值的问题,失败了,原因待查

    方式2: 直接使用循环. 计算rowIndex 就是计算从0~rowIndex-1的内容,然后进行计算

        vector<int> passcal(vector<int>& nums) {
            int len = nums.size();
            int newlen = len + 1;
            vector<int> rows(newlen);
            rows[0] = rows[len] = 1;
            for (int i=1; i<=len/2; ++i) {
                rows[i] = rows[len-i] = nums[i-1] + nums[i];
            }
            return rows;
        }
        
        vector<int> getRow(int rowIndex) {
             vector<int> rows;
             rows.push_back(1);
             if (rowIndex == 0) 
                 return rows;
             int i = 1;
             while (i<= rowIndex) {
                 rows = passcal(rows);
                 ++i;
             }
            return rows;
        }
    

    c++ 最简单版本,但是很难理解 https://leetcode.com/problems/pascals-triangle-ii/discuss/38454/Sharing-my-c%2B%2B-code-very-simple

        vector<int> getRow(int rowIndex) {
            vector<int> res(rowIndex+1,1);
            for(int i=2;i<=rowIndex;i++) { // 总共1~rowIndex
                for(int j=i-1;j>=1;j--) // 每行元素的倒数第二个值开始计算
                    res[j]=res[j]+res[j-1];
            }
            return res;
    

    2. python 版本

    思路同c++版本,注意python语言的特色

    class Solution(object):
        def getRow(self, rowIndex):
            """
            :type rowIndex: int
            :rtype: List[int]
            """
            rows = []
            rows.append(1)
            if rowIndex == 0: return rows
            for i in range(1, rowIndex+1):
                length = len(rows)
                next = (length+1)*[0]
                next[0] = next[-1] = 1
                for j in range(1, length/2+1):
                    next[j] = next[length-j] = rows[j-1] + rows[j]
                rows = next
            return rows
    

    python 语言优化版本。https://leetcode.com/problems/pascals-triangle-ii/discuss/38467/Very-simple-Python-solution

    相关文章

      网友评论

          本文标题:LeetCode 119. Pascal's Triangle

          本文链接:https://www.haomeiwen.com/subject/huykwhtx.html