首页 > 代码库 > 【LeetCode】Pascal's Triangle II

【LeetCode】Pascal's Triangle II

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?

 

解法一:利用Pascal‘s Triangle的结果,选取最后一行返回即可

class Solution {public:    vector<int> getRow(int rowIndex) {        vector<vector<int> > result = generate(rowIndex+1);        return result[rowIndex];    }    vector<vector<int> > generate(int numRows)     {        vector<vector<int> > result;        if(numRows == 0)        {            //nothing        }        else if(numRows == 1)        {            //第0层            vector<int> cur;            cur.push_back(1);            result.push_back(cur);        }        else        {            //第0层            vector<int> cur;            cur.push_back(1);            result.push_back(cur);            for(int n = 1; n < numRows; n ++)            {//用<n choose m>的通项公式来做肯定溢出,所以只能用加法做                vector<int> cur;                //                cur.push_back(1);                //中间元素是上层两元素相加                for(int i = 0, j = 1; j < n; i++, j++)                {                    vector<int> pre = result[result.size()-1];                    cur.push_back(pre[i]+pre[j]);                }                //                cur.push_back(1);                result.push_back(cur);            }        }        return result;    }};

 

【LeetCode】Pascal's Triangle II