Leetcode 118 Pascal's Triangle

Given an integer numRows, return the first numRows of Pascal’s triangle.

In Pascal’s triangle, each number is the sum of the two numbers directly above it as shown:

image
Input: numRows = 5
Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Input: numRows = 1
Output: [[1]]
  • Bizden bize verilen n katlı bir pascal üçgeni oluşturmamız isteniyor.
  • Pascal üçgeninde bir değeri üst katındaki iki değerin toplamından bulmaktayız.
  • 1 2 1 -> 1 3 3 1 elde edilir.
  • Bunu yapabilmek için bir katı hesaplarken üst katının başına ve sonuna 0 eklememiz işimizi kolaylaştırır.
  • 0 1 2 1 0 bu şekilde toplamaları yaparak bir sonraki katı buluruz.
    def generate(self, numRows: int) -> List[List[int]]:
        res = [[1]] #ilk kat hep aynı
        
        for i in range(numRows - 1):
            temp = [0] + res[-1] + [0] #sol ve sağa 0 ları ekleriz.
            row = []
            
            for j in range(len(res[-1])+1):
                row.append(temp[j] + temp[j+1])
            res.append(row)
        return res