leetcode70爬楼梯

题目:

假设你正在爬楼梯。需要 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 阶

思路:

n=1时,f(n)=1;

n=2时,f(n)=2;

n>2时,f(n)=f(n -1)+f(n -2)


解决:

解法1:递归

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

这种解法时间复杂度高,为O(n^2),提交会显示超出时间限制。


解法2:递归,用HashMap存储中间结果

private Map<Integer,Integer> storeMap = new HashMap();
public int climbStairs(int n) {if(n==1) return 1;if(n==2) return 2;if(null != storeMap.get(n))return storeMap.get(n);else {int result=climbStairs(n-1)+climbStairs(n-2);storeMap.put(n,result);return result;}
}

使用hashmap保存已经求出的f(n)值,下次求解时先在hashmap中找看之前有没有求过。这样就可以避免重复计算。时间复杂度为O(n)。


解法3:迭代循环

public int climbStairs(int n) {if(n==1) return 1;if(n==2) return 2;int result=0;int pre=2;int prepre=1;for(int i=3;i<=n;i++) {result=pre+prepre;prepre=pre;pre=result;}return result;}

由底向上,从f(2)和f(1)累加向上,f(3)=f(2)+f(1),f(4)=f(3)+f(2),求f(3)需要知道f(2)和f(1),求f(4)需要知道f(3)和f(2),则需要两个额外变量保存每轮的子问题的解。时间复杂度为O(n)。


加油加油^_^

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/68715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AIGC专栏5——EasyPhoto AI写真照片生成器 sd-webui插件介绍、安装与使用

AIGC专栏5——EasyPhoto AI写真照片生成器 插件安装与使用 学习前言源码下载地址技术原理储备&#xff08;SD/Control/Lora&#xff09;StableDiffusionControlNetLora EasyPhoto插件简介EasyPhoto插件安装安装方式一&#xff1a;Webui界面安装 &#xff08;需要良好的网络&…

安全测试目录内容合集

基础知识 安全测试基础知识 安全测试-django防御安全策略 HTTP工作原理 靶场DVWA 安全测试网站-DWVA下载安装启动 DVWA-Command Injection DVWA-5.File upload 文件上传漏洞 DVWA-9.Weak Session IDs DVWA-XSS (Stored) DVWA-10.XSS (DOM) DVWA-XSS (Reflected) DVWA-15.Ope…

Wasm软件生态系统安全分析

本文转载自 OpenHarmony TSC 官方微信公众号《峰会回顾第12期 | Wasm软件生态系统安全分析》 演讲嘉宾 | 王浩宇 回顾整理 | 廖 涛 排版校对 | 李萍萍 嘉宾简介 王浩宇&#xff0c;华中科技大学教授&#xff0c;博士生导师&#xff0c;华中科技大学OpenHarmony技术俱乐部主任…

Qt CMake 中国象棋程序实现

前驱课程 C自学精简实践教程 目录(必读) C数据结构与算法实现&#xff08;目录&#xff09; Qt 入门实战教程&#xff08;目录&#xff09; 项目初衷 为学习 Qt 的人提供一个合适的有一定难度的综合型练习项目。 在学会写代码之前&#xff0c;先看别人怎么写的代码。深入…

手动实现uni-app可用的new URL

使用 import URL from url const url new URL(https://www.aaa.com:8989/bbb/ccc/ddd.html?e1&f2&g#h3&i4&j?k5#l6&e4) console.log(url)结果 {"href": "https://www.aaa.com:8989/bbb/ccc/ddd.html?e1&f2&g#h3&i4&j…

Linux以系统服务的方式启动Kafka(其他服务同理)

最终效果&#xff1a; 先回顾命令行的启动方式&#xff1a; kafka的启动 进入kafka的安装目录 1、首先启动zookeeper服务&#xff1a; bin/zookeeper-server-start.sh config/zookeeper.properties2、再启动kafka bin/kafka-server-start.sh config/server.properties &…

Ajax模拟视频点赞功能

前台 <%--Created by IntelliJ IDEA.User: xxDate: 2023/9/4Time: 10:00To change this template use File | Settings | File Templates. --%> <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head>&l…

记录一次WMware网络问题

目录 ​编辑 一、问题描述 二、问题排查 2.1 指令ifconfig 查看ip信息 2.2 nmcli n 查看网卡状态 三、问题解决 3.1 启动 NetworkManager 网络管理器 3.2 ifup ens160 启动网卡 一、问题描述 我在我本地电脑上使用WMware虚拟机部署了k8s&#xff0c;有次正常关机后&am…

docker安装mysql、clickhouse、oracle等各种数据库汇总

1&#xff1a;docker 安装mongo数据库并使用 官网&#xff1a;https://www.mongodb.com/docs/manual/ 安装 &#xff1a;https://www.zhihu.com/question/54602953/answer/3047452434?utm_id0 安装2&#xff1a;https://www.duidaima.com/Group/Topic/ArchitecturedDesign/91…

让GPT成为您的科研加速器丨GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域&#xff1a;1、编程建议和示例代码:无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。​2、数据可视化…

Java 多线程系列Ⅳ(单例模式+阻塞式队列+定时器+线程池)

多线程案例 一、设计模式&#xff08;单例模式工厂模式&#xff09;1、单例模式2、工厂模式 二、阻塞式队列1、生产者消费者模型2、阻塞对列在生产者消费者之间的作用3、用标准库阻塞队列实现生产者消费者模型4、模拟实现阻塞队列 三、定时器1、标准库中的定时器2、模拟实现定时…

Less的强大变量用法

less中的变量应用十分强大&#xff0c;可以灵活的应用到各种不同需求的场景。 一&#xff0c;属性值变量 声明&#xff1a;sass声明变量是用$符号&#xff0c;而less声明变量是用符号 作用域&#xff1a;也区分为全局变量和局部变量&#xff0c;如果引用的变量有定义局部变量&…

vuex_cart案例

json-server使用 在目录下新建db文件夹>里面新建index.json index.json {"cart": [{"id": 100001,"name": "低帮城市休闲户外鞋天然牛皮COOLMAX纤维","price": 128,"count": 6,"thumb": "http…

Nodejs压缩图片实现方案

安装sharp 目前选择使用sharp 0.31.2版本 npm i sharp0.31.2 并且在.npmrc里面配置镜像源 sharp_dist_base_urlhttps://npmmirror.com/mirrors/sharp-libvips/v8.13.3/ sharp_binary_hosthttps://npmmirror.com/mirrors/sharp sharp_libvips_binary_hosthttps://npmmirror.…

Java8新特性stream和parallelStream有什么区别

1 stream和parallelStream的区别 1.Stream 是在 Java8 新增的特性&#xff0c;普遍称其为流&#xff1b;它不是数据结构也不存放任何数据&#xff0c;其主要用于集合的逻辑处理。 2.Stream流是一个集合元素的函数模型&#xff0c;它并不是集合&#xff0c;也不是数据结构&…

Redis数据类型

目录 前言一、数据类型二、Redis单线程模型三、String类型四、什么是业务五、Hash类型六、List类型七、SET类型八、ZEST类型 前言 一、数据类型 Redis主要有Strings、Lists、Sets、Hashes、Sorted sets等数据类型&#xff0c;这些都是非常通用的&#xff0c;还有一些少见的可…

腾讯张乐:“反内卷”潮流已至,研发效能是软件企业必由之路

目录 Why&#xff5c;“狂飙”踩下刹车&#xff0c;“湖水岩石效应”加速显现 What&#xff5c;效能 ≠ 效率&#xff0c;效能 效率 有效性 How&#xff5c;研发效能“黄金三角” e.g.&#xff5c;软件研发效能实践中的“坑”与“解” 1. 忽视重视工程师的声音 2. “迷…

C# 按钮的AcceptButton和CancelButton属性

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System

使用iCloud和Shortcuts实现跨设备同步与自动化数据采集

在如今的数字时代&#xff0c;跨设备同步和自动化数据采集对于提高工作效率和便利性至关重要。苹果的iCloud和Shortcuts App为我们提供了强大的工具&#xff0c;可以实现跨设备同步和自动化数据采集的功能。本文将详细介绍如何利用iCloud和Shortcuts App实现这些功能&#xff0…

Vue3 使用 echarts

echarts 是百度基于 JavaScript 实现的一个开源可视化图表库&#xff0c;主要特点就是可视化类型丰富、动画炫酷、使用简单。 这个教程就简单演示如何在 Vue 3 项目中使用 echarts。 1、导入 echarts import * as echarts from "echarts";2、初始化 echarts 并设置…