릿코드(LEETCODE)

119. Pascal's Triangle II

cepiloth 2020. 2. 14. 15:36
반응형

https://leetcode.com/problems/pascals-triangle-ii

 

D 풀이

-0- 다구하고 그냥 반환함 2차원 벡터 만들 필요없이 vector 2 개 선언해서 풀어도 가능해 보임

time complexity O(n)^2

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<vector<int>> arr;
        int cand = rowIndex + 1;
        arr.reserve(cand);
        for (int i = 1; i < cand + 1; i++) {
            vector<int> vi;
            for (int j = 0; j < i; j++) {
                vi.push_back(1);
            }
            arr.push_back(vi);
            vi.clear();
        }

        for (int i = 2; i < cand; i++) {
            int size = arr[i].size();
            for (int j = 1; j < size - 1; j++) {
                arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
            }
        }

        return arr[rowIndex];
    }
};

 

time complexity O(n)^2

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

 

 

반응형