6.8日学习日志

1.力扣每日一题:
爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例:输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶
    输入: 3
    输出: 3
    解释: 有三种方法可以爬到楼顶。
  3. 1 阶 + 1 阶 + 1 阶
  4. 1 阶 + 2 阶
  5. 2 阶 + 1 阶
    假设 f(x)表示 x = n时的爬楼梯方法数
    分析题目:先进行枚举后发现规律,n=0 n=1 f(x)=1; n=2 f(x)=2; n=3 f(x)=3; n=4 f(x)=5;
    可以发现它满足斐波那契数列的规律 f(x) = f(x-1) + f(x-2) 换一种理解也就是爬最后一节楼梯时,总方法数为最后爬1阶加上最后爬两阶的和
    动态规划:滚动数组
class Solution {
    public int climbStairs(int n) {
        int p = 0, q = 0, r = 1;
        for (int i = 1; i <= n; ++i) {
            p = q; 
            q = r; 
            r = p + q;
        }
        return r;
    }
}

直接利用斐波那契数列的计算公式
在这里插入图片描述

class Solution {
    public int climbStairs(int n) {
        double sqrt_5 = Math.sqrt(5);
        double fib_n = Math.pow((1 + sqrt_5) / 2, n + 1) - Math.pow((1 - sqrt_5) / 2,n + 1);
        return (int)(fib_n / sqrt_5);
    }
}

2.java学习
java学习笔记:
1.System.out.println(i++); 先执行print i 后i++;
2.定义变量的关键字 var
3.在if的使用中注意他的顺序执行,当我们要进行数据分层时,尽可能先从小范围开始处理
eg:if(a>60) System.out.println(“老年人”); if(a>40&&!(a>60)) System.out.println(“中年人”);
if(a>20 && !(a>40 && !(a>60))) System.out.println(“青年人”); if中包含else的隐藏条件
另一种if else if 写法类似
4.接收用户键盘输入:java.util.Scanner s = new java.util.Scanner(System.in);
接受整数:int i = s.nextInt();
接受字符串:String str = s.next();
5.switch语句:支持的值:int,String 当传入byte,short,char类型时自动类型转换为int
long类型时 会报错,从long转换到int可能会有损失 (int)x 强制转换
default不是必须的 当所有case值都无法对应时执行default语句
写了一个程序 输入数字判断星期几

  public class switchdayjudge
{
	public static void main(String [] args)
	{
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入[1~7]的整数");
		int num = s.nextInt();
		switch(num){
			case 1:
				System.out.println("星期一");
			break;
			case 2:
				System.out.println("星期二");
			break;
			case 3:
				System.out.println("星期三");
			break;
			case 4:
				System.out.println("星期四");
			break;
			case 5:
				System.out.println("星期五");
			break;
			case 6:
				System.out.println("星期六");
			break;
			case 7:
				System.out.println("星期天");
			break;
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值