一、对二阶ArrayList的理解
怎么理解List<List<String>>?
一个外部List(线性表),元素类型是内部List
内部List的元素的类型是String
如下图所示:(和二维数组的思路差不多)
首先,外部List是一个顺序表,它是一个数组,只不过数组中存储的元素类型为List<String>,是一个对象,而内部List也是一个顺序表,它也是一个数组,只不过存储的元素类型为String
二、使用------杨辉三角
给定一个非负整数 numRows
,生成「杨辉三角」的前 numRows
行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> list=new ArrayList<>();
list.add(new ArrayList<>());
list.get(0).add(1);
if(numRows==1){
return list;
}
list.add(new ArrayList<>());
list.get(1).add(1);
list.get(1).add(1);
if(numRows==2){
return list;
}
for(int i=3;i<=numRows;i++) {
//每循环一次多一行
list.add(new ArrayList<>());
//第三行的第一个元素为1
list.get(i - 1).add(1);
//从第三行开始,除了第一个元素和最后一个元素,剩余的i-2个元素都需要用上一行的元素相加得到
for (int j = 0; j < i - 2; j++) {
//定义一个pevLine对象,保存上一行的元素
List<Integer> prevLine = list.get(i - 2);
int first = prevLine.get(j);
int second = prevLine.get(j + 1);
int e = first + second;
list.get(i - 1).add(e);
}
list.get(i - 1).add(1);
}
return list;
}