在这篇文章中,我们将使用java解决楼梯问题,之后,我将解释数组的概念。但在我们开始写代码之前,最好对我们将要解决的问题有一个了解。考虑到楼梯的数量和你可以移动腿部的次数,我们将看看你有多少种可能的方式可以实现爬楼梯。下面的图片显示了你爬楼梯的不同可能方式。例如,我们假设楼梯上有5个台阶,你可以用2个动作或1个动作行走。
有多少种可能的方式,让我们来看看。
可能的方式一:1,1,1,1,1。
可能的方式二:2,2,1。
可能的方式三:1,2,2。
可能的方式四:2,1,2。
可能的方式五。1,2,2.
所以有五种可能的方式来爬一个五级的楼梯。也许可能有更多的方法,也许没有。所以通过对问题陈述的解释,我相信我们现在对这个问题有了很好的理解,现在可以在编写代码时实施。
图1.0:爬楼梯的可能方式。(可能还有更多可能的方式)
代码实现
-
public static intclimbStairs(intstairSteps) {
-
if (stairSteps<= 1) {
-
返回 1。
-
}
-
int[]ways= new int[stairSteps+ 1];
-
ways[0] = 1;
-
ways[1] = 1。
-
for (inti= 2;i<=stairSteps;i++) {
-
ways[i] =ways[i - 2] +ways[i - 1]。
-
}
-
返回ways[stairSteps]。
-
}
上面写的代码告诉我们几个可以爬楼梯的方法。第1行创建了一个方法,它需要n个台阶。也就是任何数量的楼梯台阶。第2行是一个条件检查,如果楼梯台阶小于或等于1,那么它应该返回。当然,如果一个楼梯台阶是1,那么唯一可能的攀登方式仍然是一个,即使你有一百条腿可以同时使用。在第5行,我们有我们的数组,存储不同的可能的爬楼梯的方式,我们用楼梯台阶的数量初始化它。
是的,我们不得不给它加1,以避免在某些情况下数组索引越界的异常。第6行和第7行将每个索引初始化为1,第8行运行for循环。以同样的方式,你会做斐波那契。最终结果在第11行返回。
-
public static voidmain(String[]args) {
-
System.out.println("你有" +climbStairs(4)+
-
"爬楼梯的可能方式" )。
-
}
上面是main方法,因为 "爬楼梯 "方法是一个静态方法,我们不需要实例化或创建一个新的类实例。
每当人们面临这样的算法挑战时,基本上阵列是非常重要的。它是一种常见的数据结构 ,可以在任何时候使用。数组数据结构使我们的工作更容易,并提供了一种在单个变量中存储项目的方法。
想想看,你想确定最小或最大的数字,一个有效的方法是有一个容器或变量,不只是一个变量,而是一种特殊的变量,即数组。你会把所有的数字存储在一个容器中。
关于数组的事情是,一旦你在创建时声明了一个数组,你必须初始化它的长度,例如,让我们说,5。这是说创建的数组变量,它的容量或长度,或它将采取多少数字是5。这就是最后的结果,你将无法添加第6个项目,因为你已经指定它为5。
在JVM(Java虚拟机)中发生的事情是,一旦你声明了一个数组并指定了长度,它就会为你指定的长度创建空间。在我们的例子中是5,如果你试图添加超过5个项目,就会出现错误,这就是所谓的数组索引超出范围的异常,对不起,它不能超过5。如果你一定要这样做,那么你可以创建另一个长度为6的数组,或者将之前的5改为6。
注意:重要的是要注意,如果你有一个数组,而你没有把项目填充到你所指定的长度,这是非常好的。但是,你不能填充超过你所指定的数量。数组不是这样工作的。
这段代码向你展示了如何创建和初始化数组。有两种方法可以做到这一点,第一种方法是创建一个指定了长度的数组,但还没有用项目来填充它。 第二种方法是在创建数组时直接用项目填充它。
String
Any way you choose to do this is fine, we can now move to solving the challenge of climbing stairs because Array would be needed.
CONCLUSION
It is important to note that If you have an array and you don't populate items into it up to the length you have specified, it is very okay. But You cant populate more than what you have specified. It does not work like that with Array. If you don't have an items yet inside the array, it is initialized to 0s for integers, false for booleans 0.0 for double and null for reference types like Strings. etc.
你可能喜欢的其他数据结构和算法文章
-
75+程序员的编码面试问题(问题)
-
如何在Java中删除数组中的重复元素?(解决方案)
-
5本深入学习数据结构和算法的书籍(书籍)
-
如何在Java中反转数组?(解决方法)
-
6门针对程序员的动态编程课程(最佳课程)
-
如何在Java中实现一个递归预排序算法?(解决方案)
-
10门针对程序员的(免费)数据结构课程(免费课程)
-
如何在没有递归的情况下打印二叉树的叶子结点?(解决方案)
-
10门破解编码面试的DS、Algo和SQL课程(课程)
-
递归后顺序遍历算法(解决方案)
-
递归顺序遍历算法(解决方案)
-
二叉树中的迭代前序遍历算法(解决方案)
-
如何在Java中计算给定二叉树中叶子节点的数量?(解决方案)
-
为程序员提供的10个免费数据结构和算法课程(课程)
-
100+面试中的数据结构编码问题(问题)
感谢你到目前为止阅读这篇文章。如果你喜欢这个Java中的爬楼梯问题解决方案,那么请与你的朋友和同事分享。如果你有任何问题,请留言给我。