릿코드(LEETCODE)

118. Pascal's Triangle

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

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

 

D 풀이 

1 로 모두 다 채워 넣고 상위 요소에서 left, rigt 에 합으로 채우주는 방식으로 풀이

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> arr;
        // 모든 원소를 1로 다 채움
        for (int i = 1; i < numRows + 1; i++) {
            vector<int> vi;
            for (int j = 0; j < i; j++) {
                vi.push_back(1);
            }
            arr.push_back(vi);
            vi.clear();
        }

	// arr[0] = 1
        // arr[1] = 1 1
        // arr[2] = 1 arr[1-1][1-1]+arr[1-1][1] 1
        for (int i = 2; i < numRows; 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;
    }
};

 

W 풀이

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int> > vv(numRows);

        for (int i = 0; i < numRows; ++i) {
            for (int j = 0; j <= i; ++j) {
                if (j == 0 || j == i) {
                    vv[i].push_back(1);
                    continue;
                }

                int left = vv[i - 1][j - 1];
                int right = vv[i - 1][j];
                vv[i].push_back(left + right);
            }
        }
        return vv;
    }
};

 

반응형