Sponsored
Sponsored
The iterative approach builds each row of Pascal's Triangle from the topmost row down to the target row, updating values in-place. The key observation is that each element at position j
in a row is the sum of the element at position j
and j-1
from the previous row. By starting from the end of the row, you can use the same array for updating values without overwriting the necessary data.
Time Complexity: O(n^2) where n is rowIndex
as it involves nested iteration to build each row.
Space Complexity: O(n) for storing the result row.
1using System;
2using System.Collections.Generic;
3
4public class Solution {
5 public IList<int> GetRow(int rowIndex) {
6 List<int> row = new List<int>(new int[rowIndex + 1]);
7 row[0] = 1;
8 for (int i = 1; i <= rowIndex; i++) {
9 for (int j = i; j > 0; j--) {
10 row[j] = row[j] + row[j - 1];
11 }
12 }
13 return row;
14 }
15
16 public static void Main() {
17 Solution sol = new Solution();
18 var result = sol.GetRow(3);
19 Console.WriteLine(string.Join(", ", result));
20 }
21}
This C# solution uses a List
initialized with zeroes and modifies the list in place to achieve the result for the specified Pascal's Triangle row index.
This approach utilizes the combinatorial formula for a specific row in Pascal's Triangle. Specifically, the k-th
element in the n-th
row is given by the binomial coefficient: C(n, k) = n! / (k! * (n-k)!). Using this fact, we can derive all the values of the row without constructing the triangle iteratively.
Time Complexity: O(n).
Space Complexity: O(n) for storing the row.
1
This Python approach exploits the combinatorial identity for binomial coefficients. Python's native integers support arbitrary precision, making this solution robust over different input sizes.