LeetCode119—Pascal's Triangle II

LeetCode119—Pascal’s Triangle II

原题

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?

Subscribe to see which companies asked this question

分析1

朴素解法就是直接LeetCode118—Pascal’s Triangle

代码

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        int row=rowIndex+1;
        int col=rowIndex+1;
        vector< vector<int> >res(row,vector<int>(col));
        for (int i = 0; i < res.size(); i++)
        {
            res[i][0] = 1;
            res[i][i] = 1;
        }//初始化
        for (int i = 2; i < row; i++)
        {
            for (int j = 1; j < col; j++)
            {
                if (i - 1>=0 && j - 1 >= 0)
                {
                    res[i][j] = res[i - 1][j - 1] + res[i - 1][j];
                }
            }
        }//赋值
        return res[rowIndex];//直接返回
    }
};

分析2

要求空间复杂度为O(K)
事实上,我们只需要一个一维数组从后往前遍历计算即可

代码2

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<int> res(rowIndex+1);
        res[rowIndex]=1;
        for(int i=0;i<rowIndex+1;i++)
        {
            for(int j=rowIndex-1;j>0;j--)
            {
                res[j]=res[j-1]+res[j];
            }
            res[0]=1;
        }
        return res;
    }
};

你可能感兴趣的:(LeetCode,杨辉三角)