• 数据结构习题--杨辉三角形(返回某一行)


    数据结构习题–杨辉三角形(返回某一行)

    输入需要第几行,返回杨辉三角形中的这一行
    注意:这里的行数是从0开始

    方法:递推(复杂度行数的平方)

    分析:

    当处于每行的第一个和最后一个时,添加的数为1
    除此之外,每个数等于上一行的左边一个数(该数的索引减1)与右边一个数(该数的索引)之和

    代码(方法一)

    public List<Integer> getRow(int rowIndex) {
            List<List<Integer>> triangle = new ArrayList<>();
            for (int i = 0; i < rowIndex + 1; i++) {
                List<Integer> array = new ArrayList<>();
                for (int j = 0; j < i + 1; j++) {
                    if (j == 0 || j == i){
                        array.add(1);
                    }else {
                        array.add(triangle.get(i - 1).get(j - 1) + triangle.get(i - 1).get(j));
                    }
                }
                triangle.add(array);
            }
            return triangle.get(rowIndex);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    代码(滚动数组优化)

    class Solution {
        public List<Integer> getRow(int rowIndex) {
            List<Integer> list = new ArrayList<>();
            for(int i = 0; i <= rowIndex; i++){
                list.add(1);
                // 每次增加1
                for(int j = i-1; j>0; j--){
                // 逆序往前增加
                    list.set(j,list.get(j-1)+list.get(j));
                }
            }
            return list;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    方法:线性递推

    分析:

    在这里插入图片描述

    代码

    class Solution {
        public List<Integer> getRow(int rowIndex) {
            List<Integer> row = new ArrayList<Integer>();
            row.add(1);
            for (int i = 1; i <= rowIndex; ++i) {
                row.add((int) ((long) row.get(i - 1) * (rowIndex - i + 1) / i));
            }
            return row;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    Python每日一练 04
    Linux之vim的使用详细解析
    1462. 课程表 IV
    【动态规划】--爬楼梯
    POSTGRESQL中的groupping函数详解
    线程安全问题
    i5 12600HX比i5 12600H选哪个好
    vue的第2篇 开发环境vscode的安装以及创建项目空间
    VS2010 组件列表与对应名称
    基于复合粒子群优化的模糊神经预测控制的研究(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/2403_82385265/article/details/137873647