杨辉三角面试题
程序员文章站
2024-02-21 12:21:04
...
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3
输出: [1,3,3,1]
代码如下:
class Solution {
public List<Integer> getRow(int rowIndex) {
//定义了一个长度为rowIndex,高度为rowIndex的二维数组,数组中的值都为0;
//由题意知,要+1
List<Integer> list = new ArrayList();
int[][] arr=new int[rowIndex+1][rowIndex+1];
for(int i=0;i<arr.length; i++) {
//由于只是给杨辉三角内的位置赋值,所以是j<=i
for(int j=0;j<=i;j++) {
//根据规律,使用if else 赋值
if(j==0||j==i) {
arr[i][j]=1;
}else {
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
}
for (int i = 0; i < arr.length; i++) {
list.add(arr[rowIndex][i]);
}
return list;
}
}
解释:
(1)等边形状的杨辉三角
(2)直角形状的杨辉三角
找出规律:
第n行有n个数字.
每一行的开始和结尾数字都为1.
用二维数组表示就是a[i][0]=1; a[i][j]=1(当i==j时);
第n+1行的第i个数字等于第n行的i-1个数字加上第n行的i个数字。
用二维数组表示就是 a[i+1][j]=a[i][j-1]+a[i][j];