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

java面试题,上楼梯有多少种方式

java面试题,上楼梯有多少种方式

题目:一个小孩上一个N级台阶的楼梯,他可以一次走1阶、2阶或3阶,那么走完N阶有多少种方式。

很自然的想法是使用递归:

public class Test04 {

public static int countWays(int n) {

if(n < 0) {

return 0;

}

else if(n == 0) {

return 1;

}

else {

return countWays(n - 1) + countWays(n - 2) + countWays(n - 3);

}

}

public static void main(String[] args) {

System.out.println(countWays(5)); // 13

// 11111, 1112, 1121, 1211, 122, 131, 113, 23, 221, 2111, 212, 32, 311

}

}

然而,这里的递归是一个头递归,也就是说要先递归再回溯(编译器无法将其优化为一个循环结构),而且是将三个递归的结果进行合并,这样的话算法的运行时间呈指数增长(渐近时间复杂度为O(3^N))。可以利用动态规划的思想对递归进行优化,其代码如下所示:

public class Test04 {

public static int countWaysDP(int n) {

int[] map = new int[n + 1];

for (int i = 0; i < map.length; i++) {

map[i] = -1;

}

return countWaysDP(n, map);

}

private static int countWaysDP(int n, int[] map) {

if (n < 0) {

return 0;

}

else if (n == 0) {

return 1;

}

else if (map[n] > -1) {

return map[n];

}

else {

map[n] = countWaysDP(n - 1, map) + countWaysDP(n - 2, map)

countWaysDP(n - 3, map);

return map[n];

}

}

public static void main(String[] args) {

System.out.println(countWaysDP(5)); // 13

// 11111, 1112, 1121, 1211, 122, 131, 113, 23, 221, 2111, 212, 32, 311

}

}
 

相关文章:

java面试题,上楼梯有多少种方式

java面试题&#xff0c;上楼梯有多少种方式 题目&#xff1a;一个小孩上一个N级台阶的楼梯&#xff0c;他可以一次走1阶、2阶或3阶&#xff0c;那么走完N阶有多少种方式。 很自然的想法是使用递归&#xff1a; public class Test04 { public static int countWays(int n) {…...

8.HTTP工作原理

HTTP是什么 HTTP工作原理 HTTP协议的请求类型和响应状态码 总结 1.HTTP是什么 HTTP超文本传输协议就是在一个网络中上传下载文件的一套规则 2.HTTP工作原理 HTTP超文本传输协议的本质是TCP通信&#xff0c;链接—>请求—>响应—>断开 3.HTTP协议的请求类型和响应状…...

环境部署的学习笔记(Docker)

1 前言 在现场测试时&#xff0c;常常需要在现场机器上搭建开发环境&#xff0c;此时使用容器会是一个比较方便的途径&#xff1b; 2 常见的容器技术 2.1 Docker⭐️31k&#xff1a;目前使用最为广泛的容器技术 2.2 Nix⭐️13.8k&#xff1a;镜像文件占用会比Docker少 Chat…...

Navicat在分辨率不同的屏幕窗口显示大小不一致问题解决

1.主屏幕为2560*1600分辨率&#xff0c;能够显示较多数据连接 2.在第二屏幕分辨率低&#xff0c;字体变大&#xff0c;显示内容变少 解决办法&#xff1a; 1.右击navicat图标-属性 2.选择【兼容性】-在兼容性页面中选择**“更改高DPI设置”** 3…勾选“高DPI缩放替代”&a…...

通过代码搞明白JAVA中值传递和引用传递

public static void main(String[] args) {Map a new HashMap();a.put("a", 1);System.out.println(a "我在main中的值");aaa(a);System.out.println(a "我在main中的值");bbb(a);System.out.println(a "我在main中的值");int b …...

ambari 开启hdfs回收站机制

hdfs回收站类似于我们常用的windows中的回收站&#xff0c;被删除的文件会被暂时存储于此&#xff0c;和回收站相关的参数有两个&#xff1a; fs.trash.interval&#xff1a;默认值为0 代表禁用回收站&#xff0c;其他值为回收站保存文件时间&#xff0c;单位为分钟 fs.trash…...

服务器数据恢复—服务器重装系统导致逻辑卷发生改变的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌linux操作系统服务器&#xff0c;服务器中有4块SAS接口硬盘组建一组raid5阵列。服务器中存放的数据有数据库、办公文档、代码文件等。 服务器故障&检测&#xff1a; 服务器在运行过程中突然瘫痪&#xff0c;管理员对服务器进行了重装…...

软件工程之架构设计

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、架构设计的目的 1.什么是复杂的软件项目 复杂的软件项目通常有两个特点&#xff1a; 需求不确定 技术复杂 技术的复杂性主要体现在四个方面…...

oracle java.sql.SQLException: Invalid column type: 1111

1.遇到的问题 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{propertyuuid, modeIN, javaTypeclass java.lang.String, jdbcTypenull, numericScalenull, r…...

Mac 浏览器下载的文件名总是「乱码」

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; 本文所说的方法是在出现文件名乱码情况下&#xff0c;如何恢复文件名的正确中文名称&#xff0c;并非一劳永逸地避免乱码的出现。这是由于下载文件名称乱码的出现&#xff0c;往往是系统、浏览器、网站三方面因素共…...

Redis Reactor事件驱动模型源码

前置学习&#xff1a;Redis server启动源码-CSDN博客 1、Redis服务器启动的时候就会就一直在轮询。 // 运行事件处理器&#xff0c;一直到服务器关闭为止 aeSetBeforeSleepProc(server.el,beforeSleep); aeMain(server.el);// 服务器关闭&#xff0c;停止事件循环 aeDeleteEven…...

cv2.error: OpenCV(4.7.0)

运行hsv脚本报错&#xff1a; cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function cv::cvtColor 解决方案&#xff1a; 这个错误信息是在使用OpenCV的cvtColor函…...

10.vue3项目(十):spu管理页面的sku的新增和修改

目录 一、sku静态页面的搭建 1.思路分析 2.代码实现 3.效果展示...

Java LeetCode篇-深入了解二叉树经典解法(三种方式实现:获取二叉树的最大深度)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 对称二叉树 1.1 判断对称二叉树实现思路 1.2 代码实现&#xff1a;判断对称二叉树 2.0 二叉树的最大深度 2.1 使用递归实现获取二叉树的最大深度思路 2.2 代码实…...

Image Segmentation Using Deep Learning: A Survey

论文标题&#xff1a;Image Segmentation Using Deep Learning:A Survey作者&#xff1a;发表日期&#xff1a;阅读日期 &#xff1a;研究背景&#xff1a;scene understanding,medical image analysis, robotic perception, video surveillance, augmented reality, and image…...

可视化开源编辑器Swagger Editor本地部署并实现远程访问管理编辑文档

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagge…...

Java TCP协议实现一对一聊天与UDP协议实现群聊案例

JavaTCP协议实现一对一聊天与UDP协议实现群聊案例 1.TCP协议实现一对一聊天 1.1服务端运行结果 1.2客服端运行结果 1.3代码汇总 服务端 package twentyone;import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.…...

【从0配置JAVA项目相关环境1】jdk + VSCode运行java + mysql + Navicat + 数据库本地化 + 启动java项目

从0配置JAVA项目相关环境 写在最前面一、安装Java的jdk环境1. 下载jdk2. 配置jdk3. 配置环境变量 二、在vscode中配置java运行环境1. 下载VSCode2. 下载并运行「Java Extension Pack」 三、安装mysql1.官网下载MySQL2.开始安装如果没有跳过安装成功 3.配置MySQL Server4.环境变…...

人工智能_机器学习053_支持向量机SVM目标函数推导_SVM条件_公式推导过程---人工智能工作笔记0093

然后我们再来看一下支持向量机SVM的公式推导情况 来看一下支持向量机是如何把现实问题转换成数学问题的. 首先我们来看这里的方程比如说,中间的黑线我们叫做l2 那么上边界线我们叫l1 下边界线叫做l3 如果我们假设l2的方程是上面这个方程WT.x+b = 0 那么这里 我们只要确定w和…...

二叉树的前、中和后序遍历的递归与迭代实现

1. 前序遍历 1.1 递归 /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefined ? null : right)* }*/ /*** param …...

告别调包:手把手教你用PyTorch从零复现CRNN文本识别网络(附完整代码)

从零构建CRNN文本识别引擎&#xff1a;PyTorch实战指南与工业级优化技巧 在计算机视觉领域&#xff0c;文本识别技术正经历着从传统算法到深度学习的革命性转变。当我们谈论OCR&#xff08;光学字符识别&#xff09;时&#xff0c;CRNN&#xff08;卷积循环神经网络&#xff0…...

QtPlaskin实战指南:从HDF5数据解析到等离子体动力学可视化

1. QtPlaskin与等离子体动力学分析入门 第一次接触QtPlaskin时&#xff0c;我被它处理复杂等离子体数据的能力惊艳到了。这个基于Python和Qt开发的图形工具&#xff0c;专门用于解析ZDPlasKin等等离子体动力学程序生成的HDF5格式数据。想象一下&#xff0c;你刚完成了一个长达…...

RexUniNLU开源镜像免配置教程:自动下载权重+端口映射一步到位

RexUniNLU开源镜像免配置教程&#xff1a;自动下载权重端口映射一步到位 1. 这不是另一个NLP工具&#xff0c;而是一站式中文语义理解中枢 你有没有遇到过这样的情况&#xff1a;想快速验证一段中文文本里藏着多少信息——谁说了什么、发生了什么事、情绪是好是坏、背后有哪些…...

ESP8266高速移位寄存器驱动库:3.8μs级GPIO直控

1. FastEsp8266ShiftRegister 库概述FastEsp8266ShiftRegister 是一款专为 ESP8266 微控制器深度优化的高速移位寄存器驱动库。其核心设计目标是突破传统软件模拟 SPI 或标准 GPIO 操作在 ESP8266 上的性能瓶颈&#xff0c;实现接近硬件 SPI 时序精度、但具备更高灵活性的并行/…...

Comsol 薄板声辐射响应优化:激励位置与频率的协同效应

1. 薄板声辐射响应基础原理 当你用手指轻轻敲击一块金属薄板时&#xff0c;会听到清脆的声响。这个看似简单的现象背后&#xff0c;隐藏着复杂的声学原理。在Comsol仿真中&#xff0c;我们可以精确模拟这种声辐射响应&#xff0c;为声学设备设计提供科学依据。 薄板声辐射的本质…...

OpenClaw自动化报告:Qwen3.5-4B-Claude周报生成与邮件发送

OpenClaw自动化报告&#xff1a;Qwen3.5-4B-Claude周报生成与邮件发送 1. 为什么选择OpenClaw处理周报任务 每周五下午&#xff0c;我都会面临同样的困扰——需要从零散的会议记录、Git提交和即时通讯对话中提取关键信息&#xff0c;整理成一份结构清晰的周报。这个耗时1-2小…...

macOS玩家必备:OpenClaw+nanobot自动化办公实战

macOS玩家必备&#xff1a;OpenClawnanobot自动化办公实战 1. 为什么选择OpenClawnanobot组合&#xff1f; 作为一个长期在macOS上折腾自动化工具的老用户&#xff0c;我一直在寻找一个既能保持本地数据隐私&#xff0c;又能灵活处理办公场景的解决方案。直到遇到OpenClawnan…...

基于carsim Simulink联合仿真和预瞄PID算法的轨迹跟踪模型】车辆路径跟踪包括主车...

基于carsim Simulink联合仿真和预瞄PID算法的轨迹跟踪模型】车辆路径跟踪包括主车的纵向和横向运动控制&#xff0c;纵向控制是通过调整轮毂电机的扭矩&#xff0c;使得车辆以期望的速度行驶&#xff1b;横向控制是通过调整主车的转向&#xff0c;使主车沿预期的轨迹行驶。 本模…...

深入排查k8s集群6443端口连接拒绝:从kubectl故障到系统级修复

1. 当kubectl突然罢工&#xff1a;6443端口连接拒绝的紧急处理 那天早上我像往常一样打开终端&#xff0c;准备用kubectl get pods查看集群状态&#xff0c;结果终端冷冰冰地抛出一行错误&#xff1a;"Unable to connect to the server: dial tcp 192.168.1.1:6443: conne…...

5个痛点解决:ComfyUI-KJNodes让工作流效率提升60%的实战指南

5个痛点解决&#xff1a;ComfyUI-KJNodes让工作流效率提升60%的实战指南 【免费下载链接】ComfyUI-KJNodes Various custom nodes for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes ComfyUI-KJNodes是一套功能强大的ComfyUI自定义节点集合&…...