|
1 | 1 | package com.fishercoder.solutions;
|
2 | 2 | import java.util.*;
|
3 |
| -/**Given an index k, return the kth row of the Pascal's triangle. |
| 3 | + |
| 4 | +/** |
| 5 | + * 119. Pascal's Triangle II |
| 6 | + * Given an index k, return the kth row of the Pascal's triangle. |
4 | 7 |
|
5 | 8 | For example, given k = 3,
|
6 | 9 | Return [1,3,3,1].
|
7 | 10 |
|
8 | 11 | Note:
|
9 |
| - Could you optimize your algorithm to use only O(k) extra space?*/ |
| 12 | + Could you optimize your algorithm to use only O(k) extra space? |
| 13 | + */ |
10 | 14 |
|
11 | 15 | public class _119 {
|
12 | 16 |
|
13 |
| - public List<Integer> getRow(int rowIndex) { |
14 |
| - if(rowIndex < 0) return new ArrayList(); |
15 |
| - List<List<Integer>> result = new ArrayList(); |
16 |
| - List<Integer> row = new ArrayList(); |
17 |
| - row.add(1); |
18 |
| - result.add(row); |
19 |
| - for(int i = 1; i <= rowIndex; i++){ |
20 |
| - List<Integer> newRow = new ArrayList(); |
21 |
| - newRow.add(1); |
22 |
| - List<Integer> lastRow = result.get(i-1); |
23 |
| - for(int j = 1; j < lastRow.size(); j++){ |
24 |
| - newRow.add(lastRow.get(j-1) + lastRow.get(j)); |
| 17 | + public static class Solution1 { |
| 18 | + public List<Integer> getRow(int rowIndex) { |
| 19 | + if (rowIndex < 0) return new ArrayList(); |
| 20 | + List<List<Integer>> result = new ArrayList(); |
| 21 | + List<Integer> row = new ArrayList(); |
| 22 | + row.add(1); |
| 23 | + result.add(row); |
| 24 | + for (int i = 1; i <= rowIndex; i++) { |
| 25 | + List<Integer> newRow = new ArrayList(); |
| 26 | + newRow.add(1); |
| 27 | + List<Integer> lastRow = result.get(i - 1); |
| 28 | + for (int j = 1; j < lastRow.size(); j++) { |
| 29 | + newRow.add(lastRow.get(j - 1) + lastRow.get(j)); |
| 30 | + } |
| 31 | + newRow.add(1); |
| 32 | + result.add(newRow); |
| 33 | + } |
| 34 | + return result.get(result.size() - 1); |
| 35 | + } |
| 36 | + } |
| 37 | + |
| 38 | + public static class Solution_OkSpace { |
| 39 | + public List<Integer> getRow(int rowIndex) { |
| 40 | + List<Integer> row = new ArrayList<>(); |
| 41 | + for (int i = 0; i < rowIndex + 1; i++) { |
| 42 | + row.add(0, 1); |
| 43 | + for (int j = 1; j < row.size() - 1; j++) { |
| 44 | + row.set(j, row.get(j) + row.get(j + 1)); |
| 45 | + } |
25 | 46 | }
|
26 |
| - newRow.add(1); |
27 |
| - result.add(newRow); |
| 47 | + return row; |
28 | 48 | }
|
29 |
| - return result.get(result.size()-1); |
30 | 49 | }
|
31 | 50 |
|
32 | 51 | }
|
0 commit comments