我是靠谱客的博主 无聊抽屉,最近开发中收集的这篇文章主要介绍Java随记5-编程-爬楼梯,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.关于抽象类和接口叙述正确的

抽象类

特点:

1.抽象类中可以构造方法
2.抽象类中可以存在普通属性,方法,静态属性和方法。
3.抽象类中可以存在抽象方法。
4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。
5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰

关键字使用注意:

抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。

接口

1.在接口中只有方法的声明,没有方法体。
2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final
3.在接口中的方法,永远都被public来修饰。
4.接口中没有构造方法,也不能实例化接口的对象。(所以接口不能继承类)
5.接口可以实现多继承
6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。
7,接口可以继承接口,用extends

2.导出类调用基类的构造器必须用到的关键字:(其实就是子类调用父类的构造器)

使用super()关键字,且放在子类构造函数的第一行

3.初始化过程是这样的(服了,第2遍记录了,初始化过程)

1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;
2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;
3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;
4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法;

(1)初始化父类的普通成员变量和代码块,执行 C c = new C(); 输出C
(2)super(“B”);表示调用父类的构造方法,不调用父类的无参构造函数,输出B
(3) System.out.print(“B”);

4.

 /** * String split 这个方法默认返回一个数组,
* 如果没有找到分隔符,
* 会把整个字符串当成一个长度为1的字符串数组
* 返回到结果, 所以此处结果就是1 */

private static void testSpringSpilte(){
String str = "12,3";
String str2 = "123";
System.out.print(str.split(",").length);
System.out.print(str2.split(",").length);
}
}
结果
2
1
str.split(",")方法是把str字符串根据分割符","划分成一个字符串数组,
如果str字符串中找不到分隔符",",则把整个str字符串放入字符串数组的第一个元素。
因此str.split(",").length=1。

5.在你面前有一个n阶的楼梯,你一步只能上1阶或2阶。请问,当N=11时,你可以采用多少种不同的方式爬完这个楼梯(),当N=9时呢呢()?——Java 爬楼梯

你需要爬11楼的时候,你倒回去一步只能待在第10楼或者第9楼。换句话说就是到达第9楼的方法次数加上第10楼的方法次数。
如果你待在第10楼,就得待在第9楼或者第8楼
如果你待在第9楼,就得待在第8楼或者第7楼
......
如果你待在第3楼,就得待在第1楼或者第2楼
爬1楼一种方法,
爬2楼两种方法。
爬3楼就是爬1楼方法次数加2楼的方法次数。
用数学表达就是:
a(11=a(10+a(9=144
a(10=a(9+a(8=89
a(9=a(8+a(7=55
a(8=a(7+a(6=34
a(7=a(6+a(5=21
a(6=a(5+a(4=13
a(5=a(4+a(3=8
a(4=a(3+a(2=5
a(3=a(2+a(1=3
a(2=2
a(1=1

思想: 爬到第n阶的方法数等于第n-1阶方法数与第n-2阶楼梯的方法数之和。 f(n) = f(n-1) + f(n-2);

1
class Solution {
public int climbStairs(int n) {
if(n == 0 || n == 1 || n == 2)
return n;
return climbStairs(n-1) + climbStairs(n-2);
}
}

法2

参考斐波那契数方法
class Solution {
public int climbStairs(int n) {
if (n == 1) {
return 1;
}
int first = 1;
int second = 2;
for (int i = 3; i <= n; i++) {
int third = first + second;
first = second;
second = third;
}
return second;
}
}
3
参考动态规划法
class Solution {
public int climbStairs(int n) {
if (n == 1) {
return 1;
}
int[] dp = new int[n + 1];
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
}

最后

以上就是无聊抽屉为你收集整理的Java随记5-编程-爬楼梯的全部内容,希望文章能够帮你解决Java随记5-编程-爬楼梯所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部