LeetCode Pascal's Triangle II

class Solution {

public:

    vector<int> getRow(int rowIndex) {

        int half = (rowIndex + 1) / 2;

        int len = half * 2  + !(rowIndex & 0x1);

        

        int* ra = new int[half + 1];

        int* rb = new int[half + 1];

        

        ra[0] = 1;

        rb[0] = 1;

        

        for (int i=1; i<=rowIndex; i++) {

            int h = (i + 1) / 2;

            int j = 1;

            for (; j<h; j++) {

                rb[j] = ra[j-1] + ra[j];

            }

            if (!(i & 0x1)) {

                rb[j] = ra[j-1] * 2;

            }

            int* t = ra;

            ra = rb;

            rb = t;

        }

        vector<int> res(len, 0);

        

        for (int i=0; i<half; i++) {

            res[i] = ra[i];

            res[len - i - 1] = ra[i];

        }

        if (!(rowIndex & 0x1)) res[half] = ra[half];

        return res;

    }

};

不顺

你可能感兴趣的:(LeetCode)