当前位置: 首页 > news >正文

【leetcode hot 100 70】爬楼梯

解法一:(动态规划)num[i]表示i有几种不同的方法可以爬到楼顶n

动态规划方程为:
n u m [ i ] = { 0 , i = n 1 , i = n − 1 , n − 2 ∑ i + 1 i + 3 n u m [ j ] , o t h e r s num[i]=\begin{array}{l} \left\{\begin{matrix} 0,i=n\\ 1,i=n-1,n-2\\ \sum_{i+1}^{i+3} num[j],others \end{matrix}\right. \end{array} num[i]= 0,i=n1,i=n1,n2i+1i+3num[j],others

import java.util.*;

/**
 * @author longyy
 * @version 1.0
 */
class Solution79 {
    public int climbStairs(int n) {
        if(n == 0) return 0;
        if(n == 1) return 1;
        int[] nums = new int[n+1];
        nums[n] = 0;
        nums[n-1] = 1;
        nums[n - 2] = 2;
        if(n > 2){
            for(int i = n-3; i >= 0; i--){
                for(int j = i+1; j-i < 3; j++){
                    nums[i] += nums[j];
                }
            }
        }
        return nums[0];
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        Solution79 sol = new Solution79();
        System.out.println(sol.climbStairs(n));
    }
}

注意:

  • 累加nums时,j∈[i+1,i+3) 保证只走1或2步
  • dp初始化为dp[n+1]dp[i]表示i到n可以有多少种走法;初始状态为nums[n] = 0; nums[n-1] = 1; nums[n - 2] = 2;,返回值为dp[0]

相关文章:

  • 万相2.1本地部署教程——阿里开源超强AI视频模型:物理模拟×中英双驱,定义AI生成新标杆!
  • almalinux 8 9 升级到指定版本
  • Ansible的使用2
  • 一周学会Pandas2 Python数据处理与分析-Pandas2二维数据结构-DataFrame
  • ruby超高级语法
  • Jenkins配置的JDK,Maven和Git
  • 一站式AIGC创作平台主要功能介绍及使用教程
  • C语言核心知识点整理:结构体对齐、预处理、文件操作与Makefile
  • GPT文生图模型新玩法
  • DFS和BFS的模版
  • Linux 基础入门操作 前言 VIM的基本操作 2
  • Java logback框架日志输出中文乱码的解决方案(windows)
  • 【Easylive】定时任务-每日数据统计和临时文件清理
  • JavaWeb 课堂笔记 —— 04 Ajax
  • 我提了一个 Androidx IssueTracker
  • [QMT量化交易小白入门]-四十二、五年年化收益率26%,当日未成交的下单,取消后重新委托
  • PHP开发效率提升利器:通义灵码在VSCode中的应用与技巧
  • Model Context Protocol(MCP)介绍
  • CPP杂项
  • 下载firefox.tar.xz后如何将其加入到Gnome启动器
  • 印度证实印巴已同意停火
  • 时代中国控股:前4个月销售额18.1亿元,境外债重组协议押后聆讯至5月底
  • 被取消总统候选人资格,金文洙:将采取政治法律措施讨回公道
  • 李在明正式登记参选下届韩国总统
  • 习近平会见塞尔维亚总统武契奇
  • 西安机场回应航站楼“水帘洞”事件:屋面排水系统被冰雹堵塞