【Leetcode119】Pascal's Triangle II

class Solution {
public:
    vector<int> getRow(int rowIndex) {
    //迭代
        if(rowIndex==0){//这里要有大括号。而且这里的终止条件rowIndex==0而不是1!!!
            vector<int> result(1,1);//这里讲result初始化为1个1的vector
            //result.resize(1);//这里的resize也就不需要了
            return result;
        }
        vector<int> last = getRow(rowIndex-1);
        vector<int> result(rowIndex+1);//初始化后的大小,等同于resize
        //result.resize(rowIndex+1);
        result[0] = result[rowIndex] = 1;
        for(int i = 1; i < rowIndex; ++i){
            result[i] = last[i-1] + last[i];
        }
        return result;
    }
};

要求空间复杂度是O(k),常数空间复杂度,在原来的位置上修改,此时只能从右往左遍历

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<int> result(rowIndex+1, 1);
        for(int i =0; i < rowIndex+1; ++i){
            for(int j = i; j >=0; --j){
                if(j == 0 || j==i) result[j] = 1;
                else//这里的else必须要有的
                    result[j] += result[j-1];
            }
        }
        return result;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_39458342/article/details/88702059