会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132440个问题
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 1712楼
JAVA 全系列/第一阶段:JAVA 快速入门/变量、数据类型、运算符 1713楼

老师好,我在用数组做动态规划算法题时,遇到个问题:


问题是爬楼梯的算法问题:

https://leetcode-cn.com/problems/climbing-stairs/



代码如下:


class Solution {
    public int climbStairs(int n) {
        if(n<=0) return 0;
        if(n==1) return 1;
        if(n==2) return 2;
        int[] dp = new int[n];
        dp[1]=1;
        dp[2]=2;
        for(int i=3;i<=n;i++){
            dp[i]=dp[i-1]+dp[i-2];
        }
        return dp[n];
        
    }
}



我的问题在第六行,在初始化数组时,因为for循环i到n就截止了,因此dp的最后条件是:

dp[n]=dp[n-1]+dp[n-2];


因此第六行创建初始化数组,我认为数组长度为n就够了,但是这里会出现 out of bounds的超出边界问题。


这里应该是初始化一个n+1 长度的数组,但是这里我不懂为什么会超出边界呢?谢谢


JAVA 全系列/第一阶段:JAVA 快速入门/数组和数据存储 1714楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 1715楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 1716楼
JAVA 全系列/第一阶段:JAVA 快速入门/数组和数据存储 1721楼
JAVA 全系列/第一阶段:JAVA 快速入门/变量、数据类型、运算符 1723楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637