import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num int整型
* @return int整型一维数组
*/
public int[] getRow (int num) {
// write code here
return getRow(new HashMap<Integer, int[]>(), num);
}
/**
* return 返回第num行的杨辉三角数组
* map:保存每一行的数据,key为行号, value为行的数组
* num: 行号
**/
private int[] getRow(Map<Integer, int[]> map, int num){
if(num == 0) {
//递归终止条件
return new int[]{1};
}
//初始化数组
int[] result = new int[num + 1];
//第一个数字一定是1
result[0] = 1;
for(int j = 1; j < num; j++){
//先从map获取上一行的数组
int[] last = map.get(num - 1);
if(last == null) {
//没有时采用递归计算获取
last = getRow(map, num - 1);
}
//累加上一行数据
result[j] = last[j - 1] + last[j];
}
//最后一个数字一定是1
result[num] = 1;
//保存计算过的数据
map.put(num, result);
return result;
}
}