假设有一个数组Integer[][] a;
那么在java 8中如何将其转换a为List<List<Integer>>?这是我的 leetcode Pascal's trianagle 代码
class Solution {
public List<List<Integer>> generate(int numRows) {
Integer[][] a = new Integer[numRows][numRows];
a[0][0] = 1;
for(int i=0;i<numRows;i++) {
a[i][0] = 1;
for(int j=0;j<=i;j++) {
if(i == j)
a[i][j] = 1;
else {
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
}
return ______;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我应该在 return 语句中写什么?
这会过去的。我们将对所有行使用ArrayList<>()of 类型List<List<Integer>(这是所需的输出)ArrayList<>(),对临时行使用一个类型:
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> rows = new ArrayList<>();
ArrayList<Integer> row = new ArrayList<>();
for (int i = 0; i < numRows; i++) {
row.add(0, 1);
for (int j = 1; j < row.size() - 1; j++)
row.set(j, row.get(j) + row.get(j + 1));
rows.add(new ArrayList<Integer>(row));
}
return rows;
}
}
Run Code Online (Sandbox Code Playgroud)
帕斯卡三角问题还有一个数学解决方案(例如,在 Python 中):
import math
class Solution:
def generate(self, size):
if size < 0:
return [[1]]
rows = []
for n in range(size):
row = []
for r in range(n + 1):
row.append(math.factorial(n) // math.factorial(r) // math.factorial(n - r))
rows.append(row)
return rows
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |