In this Leetcode Pascal's Triangle II problem solution we have Given an integer rowIndex, return the rowIndexth (0-indexed) row of Pascal's triangle. In Pascal's triangle, each number is the sum of the two numbers directly above it.

Leetcode Pascal's Triangle II problem solution


Problem solution in Python.

class Solution:
    def getRow(self, rowIndex: int) -> List[int]:
        if rowIndex == 0: 
            return [1]
        if rowIndex == 1: 
            return [1, 1]
        if rowIndex == 2: 
            return [1, 2, 1]
        
        ans = [1] * (rowIndex + 1)
        prev = [1, 2, 1]
        
        for i in range(3, rowIndex + 1):
            for j in range(1, i):
                ans[j] = prev[j] + prev[j - 1]
            prev = ans[:]
            
        return ans



Problem solution in Java.

public List<Integer> getRow(int rowIndex) {      
        List<Integer> result = new ArrayList<>();
        result.add(1);
        
        if(rowIndex==0) return result;
        
        List<Integer> prev = getRow(rowIndex-1);        
        for(int i=0; i<prev.size()-1;i++){
            result.add(prev.get(i)+prev.get(i+1));
        }
        result.add(1);
        
        return result;
    }


Problem solution in C++.

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        ++rowIndex;
        std::vector<int> res(rowIndex, 1);
        for(int i{1}; i < rowIndex; ++i) res[i] = (int64_t) res[i-1] * (rowIndex-i) / i;
        return res;
    }
};


Problem solution in C.

int* getRow(int rowIndex, int* returnSize) {
    int *result = malloc((rowIndex + 1) * sizeof(int));
    int i, j, new, old = 1;
    
    *returnSize = rowIndex + 1;
    
    for (i = 0; i <= rowIndex; i++) {
        result[i] = 1;
        for (j = 1; j < i; j++) {
            new = result[j];
            result[j] += old;
            old = new;
        }
    }
    
    return result;
}