杨辉三角面试题

给定一个非负索引 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];

猜你喜欢

转载自blog.csdn.net/qq_37924905/article/details/108303585