解决“攀爬楼梯”租赁代码问题
#编程 #编码 #java #discuss

问题:

70。爬楼梯
类型:Easy
喜欢19.8k
被656不喜欢。
问这个问题的公司
公司:没有时间问
亚马逊3
雅虎2
Adobe 11
Google 5
苹果5
彭博3
微软3
Uber 2
Nagarro 2
Expedia 12
Oracle 4
高盛3
Facebook 2
英特尔2
签证2
optum 2
Swiggy 2

您正在攀登楼梯。到达顶部需要N步骤。

每次您都可以攀登1或2步。您可以通过几种不同的方式爬到顶部?

示例1:
输入:n = 2
输出:2
说明:
`有两种爬到顶部的方法。

  1. 1步 + 1步
  2. 2个步骤

示例2:
输入:n = 3
输出:3
说明:
`有三种爬升到顶部的方法。

  1. 1步 + 1步 + 1步
  2. 1步 + 2步
  3. 2步 + 1步骤

约束:
1 <= n <= 45

直觉:

问题是要找到一次爬上楼梯的方法,当您一次可以进行1步或2步。要解决它,您可以使用动态编程。

方法:

创建一个数组来存储到达每个步骤的方法数量。
初始化数组的前两个元素(代表第一步和第二个步骤)。
使用循环计算到达每个后续步骤的方法数量。
返回到达最后一步的方法数量。

复杂:

时间复杂性:o(n)
空间复杂性:o(n)

代码

class Solution {
    public int climbStairs(int n) {
        int[] arr = new int[n+1];

        if(n == 1){
            return 1;
        }
        else{
            arr[1] = 1;
            arr[2] = 2;
            for(int i = 3 ; i <=n ; i++){
                arr[i] = arr[i-1] + arr[i-2];
            }
        }
       return arr[n];
    }
}

愉快的编码,
湿婆