LeetCode 之 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].

杨辉三角2,其实和上一个题没区别,可以回忆一下上一个题杨辉三角只不过只需要最后的结果,因此用两个指针来回指着,及时delete就能节约空间。不过需要复习一下vector的基本操作和指针的使用。。。大笑

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        // IMPORTANT: Please reset any member data you declared, as
        // the same Solution instance will be reused for each test case.
        
        //用两个指针指向两个vector
        vector<int>*now;
        vector <int>* last ;
        
        //分配空间
        now = new vector<int>;
        now->push_back(1);
        
        
        for(int i = 0 ; i < rowIndex ; i++){
           //把上一次的vector 变成last,给now重新申请空间
            last = now;
            
            now = new vector<int>;
            
            now->push_back(1);
            for (int j = 0; j < last->size()-1 ; j++)
            {
                //注意vector指针的使用
                now->push_back( (*last)[j] + (*last)[j+1] );
            }
            now->push_back(1);
            //节省空间
            delete last;
        }
        
        return *now;
    }
};


你可能感兴趣的:(LeetCode)