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

[代码随想录Day32打卡] 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

理论基础

题型

  1. 动归基础(这一节就是基础题)
  2. 背包问题
  3. 打家劫舍
  4. 股票问题
  5. 子序列问题

动态规划五部曲

  1. 确定dp数组及其下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 遍历顺序
  5. 打印dp数组

509. 斐波那契数

简单~

  1. dp数组及下标含义: dp[i]表示第i各斐波那契数,值为dp[i]
  2. 递推公式:dp[i] = dp[i-1] -dp[i-2]
  3. dp数组如何初始化:dp[0] = 0; dp[1] = 1;题目描述中有敌意
  4. 遍历顺序:从前往后
  5. 打印dp数组

当前位置的值只与该位置的前两个数值有关,只需要维护长度为2的数组。

class Solution {
public:int fib(int n) {if(n==0 || n==1) return n;vector<int> dp(2);dp[0] = 0; dp[1] = 1;for(int i=2; i<=n; i++){int sum = dp[1] + dp[0];dp[0] = dp[1];dp[1] = sum;}return dp[1];}
};
class Solution {public int fib(int n) {if(n == 0 || n == 1) return n;int[] dp = new int[2];dp[0] = 0; dp[1] = 1;for(int i = 2; i<=n; i++){int sum = dp[0] + dp[1];dp[0] = dp[1];dp[1] = sum;}return dp[1];}
}
class Solution(object):def fib(self, n):""":type n: int:rtype: int"""if n == 0 or n == 1:return ndp = [0,1]for i in range(2, n+1):sum_ = dp[0] + dp[1]dp[0] = dp[1]dp[1] = sum_return dp[1] 

参考文章

  1. https://programmercarl.com/0509.%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE

70. 爬楼梯

要明白如果爬n层有两种情况: 一种是从n-2层迈两步上来的,一种是从n-1层迈一步上来的。所以到达第n层的方法数量=到达第n-2层的方法数+到达第n-1层的方法数。

  1. dp数组及其下标含义 dp[i] 表示到达第i层的方法数量
  2. 递推公式 dp[i] = dp[i-1] + dp[i-2]
  3. dp数组初始化 dp[1] = 1 dp[2] = 2,0没有实际意义
  4. 遍历顺序:从前往后
  5. 打印dp数组

当前位置数值只与当前位置前2个位置数值有关,只需要维护长度为2的数组,但是0没有实际意义,为了实现更加明确的初始化我们定义长度为3的数组,0这个位置不进行初始化。

class Solution {
public:int climbStairs(int n) {if(n==1 || n==2) return n;vector<int> dp(3);dp[1] = 1;//空出0来因为没有意义dp[2] = 2;for(int i = 3; i <= n; i++){int sum = dp[1] + dp[2];dp[1] = dp[2];dp[2] = sum;}return dp[2];}
};
class Solution {public int climbStairs(int n) {if(n == 1 || n == 2) return n;int[] dp = new int[3];dp[1] = 1; dp[2] = 2;for(int i = 3; i <= n; i++){int sum = dp[1] + dp[2];dp[1] = dp[2];dp[2] = sum;}return dp[2];}
}
class Solution(object):def climbStairs(self, n):""":type n: int:rtype: int"""if n == 1 or n == 2:return ndp = [None, 1, 2]for i in range(3, n+1):sum_ = dp[1] + dp[2]dp[1] = dp[2]dp[2] = sum_return dp[2]

参考文章

  1. https://programmercarl.com/0070.%E7%88%AC%E6%A5%BC%E6%A2%AF.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE

746. 使用最小花费爬楼梯

Note:注意题目描述,该位置不花费体力,往上跳花费体力。并且cost的长度是顶楼。

  1. dp数组及其下标含义:dp[i] 到达第i层所需要的最小花费为dp[i]
  2. 递推公式: dp[i] = min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2]);
  3. dp数组如何初始化: dp[0]=0;dp[1]=0;//因为当前位置不花费,向上跳才花费所以都初始化为0
  4. 遍历顺序:从前往后
  5. 打印dp数组
class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {if(cost.size()<2) return 0;vector<int> dp(2);for(int i = 2; i <= cost.size(); i++){int minCost = min(dp[0] + cost[i-2], dp[1] + cost[i-1]);dp[0] = dp[1];dp[1] = minCost;}return dp[1];}
};
class Solution {public int minCostClimbingStairs(int[] cost) {if(cost.length<2) return 0;int[] dp = new int[]{0, 0};for(int i = 2; i <= cost.length; i++){int minCost = Math.min(dp[0] + cost[i-2], dp[1] + cost[i-1]);dp[0] = dp[1];dp[1] = minCost;}return dp[1];}
}
class Solution(object):def minCostClimbingStairs(self, cost):""":type cost: List[int]:rtype: int"""if len(cost)<2:return 0dp = [0, 0]for i in range(2, len(cost)+1):minCost = min(dp[0]+cost[i-2], dp[1]+cost[i-1])dp[0] = dp[1]dp[1] = minCostreturn dp[1]

参考文章

  1. https://programmercarl.com/0746.%E4%BD%BF%E7%94%A8%E6%9C%80%E5%B0%8F%E8%8A%B1%E8%B4%B9%E7%88%AC%E6%A5%BC%E6%A2%AF.html

相关文章:

[代码随想录Day32打卡] 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

理论基础 题型 动归基础&#xff08;这一节就是基础题&#xff09;背包问题打家劫舍股票问题子序列问题 动态规划五部曲 确定dp数组及其下标的含义确定递推公式dp数组如何初始化遍历顺序打印dp数组 509. 斐波那契数 简单~ dp数组及下标含义&#xff1a; dp[i]表示第i各斐…...

android NumberPicker隐藏分割线或修改颜色

在 Android 中&#xff0c;可以通过以下几种方法隐藏 NumberPicker 的分割线&#xff1a; 使用 XML 属性设置 在布局文件中的 NumberPicker 标签内添加 android:selectionDividerHeight"0dp" 属性&#xff0c;将分割线的高度设置为 0&#xff0c;从而达到隐藏分割线…...

7-2 二分查找

输入n值(1<n<1000)、n个非降序排列的整数以及要查找的数x&#xff0c;使用二分查找算法查找x&#xff0c;输出x所在的下标&#xff08;0~n-1&#xff09;及比较次数。若x不存在&#xff0c;输出-1和比较次数。 输入格式: 输入共三行&#xff1a; 第一行是n值&#xff1…...

mid360使用cartorapher进行3d建图导航

1. 添加urdf配置文件&#xff1a; 添加IMU配置关节点和laser关节点 <!-- imu livox --> <joint name"livox_frame_joint" type"fixed"> <parent link"base_link" /> <child link"livox_frame" /> <o…...

Ubuntu安装grafana

需求背景&#xff1a;管理服务器&#xff0c;并在线预警&#xff0c;通知 需求目的&#xff1a; 及时获取服务器状态 技能要求&#xff1a; 1、ubuntu 2、grafana 3、prometheus 4、node 步骤&#xff1a; 一、grafana安装 1、准备系统环境&#xff0c;配置号网络 2、…...

Java版-图论-最短路-Floyd算法

实现描述 网络延迟时间示例 根据上面提示&#xff0c;可以计算出&#xff0c;最大有100个点&#xff0c;最大耗时为100*wi,即最大的耗时为10000&#xff0c;任何耗时计算出来超过这个值可以理解为不可达了&#xff1b;从而得出实现代码里面的&#xff1a; int maxTime 10005…...

可视化建模以及UML期末复习篇----UML图

这是一篇相对较长的文章&#xff0c;如你们所见&#xff0c;比较详细&#xff0c;全长两万字。我不建议你们一次性看完&#xff0c;直接跳目录找你需要的知识点即可。 --------欢迎各位来到我UML国&#xff01; 一、UML图 总共有如下几种&#xff1a; 用例图&#xff08;Use Ca…...

HTML常见标签列表,涵盖了多种用途的标签。

文档结构标签 <!DOCTYPE html>&#xff1a;声明文档类型&#xff0c;告诉浏览器使用HTML5标准。<html>&#xff1a;HTML文档的根元素。<head>&#xff1a;包含文档的元数据&#xff08;meta-data&#xff09;&#xff0c;如标题、字符集、样式表链接、脚本等…...

FPGA 16 ,Verilog中的位宽:深入理解与应用

目录 前言 一. 位宽的基本概念 二. 位宽的定义方法 1. 使用向量变量定义位宽 ① 向量类型及位宽指定 ② 位宽范围及位索引含义 ③ 存储数据与字节数据 2. 使用常量参数定义位宽 3. 使用宏定义位宽 4. 使用[:][-:]操作符定义位宽 1. 详细解释 : 操作符 -: 操作符 …...

vue-生命周期

Vue 的生命周期是指 Vue 实例从创建到销毁期间经历的一系列阶段。每个阶段都有相应的钩子函数&#xff08;Lifecycle Hooks&#xff09;&#xff0c;允许开发者在这些关键时刻执行自定义逻辑。 一、钩子函数 1. 创建阶段 beforeCreate 在实例初始化之后&#xff0c;数据观测 …...

浅谈Kubernetes(K8s)之RC控制器与RS控制器

1.RC控制器 1.1RC概述 Replication Controller 控制器会持续监控正在运行的Pod列表&#xff0c;并保证相应类型的Pod的数量与期望相符合&#xff0c;如果Pod数量过少&#xff0c;它会根据Pod模板创建新的副本&#xff0c;反之则会删除多余副本。通过RC可实现了应用服务的高可用…...

本题要求采用选择法排序,将给定的n个整数从大到小排序后输出。

#include <stdio.h> #define MAXN 10 int main() { int i, index, k, n, temp; int a[MAXN]; scanf("%d", &n); for (i 0; i < n; i) { scanf("%d", &a[i]); } // 外层循环控制排序轮数&#xff0c;一共需要n-1轮 for (k 0; k < n…...

Linux: glibc: 频繁调用new/delete会不会导致内存的碎片

最近同事问了一个问题:频繁调用new/delete会不会导致内存的碎片。 下面是我想到的一些回答, glibc的内存处理机制,是在释放的时候会自动将小块内存整合成大块内存,为接下来满足大块的需求的可能。而且程序也不是一直占着内存不释放(如果是一直不释放,要考虑是不是内存泄漏…...

量子变分算法---损失函数

引子 关于损失函数&#xff0c;我们知道在强化学习中&#xff0c;会有一个函数&#xff0c;用来表示模型每一次行为的分数&#xff0c;通过最大化得分&#xff0c;建立一个正反馈机制&#xff0c;若模型为最优则加分最多&#xff0c;若决策不佳则加很少分或者扣分。而在神经网络…...

计算机的性能评估

目录 计算机的性能评估 确定性能指标 考虑通讯因素 考虑机器过热因素 综合评估模型 动态评估与调整 计算机的性能评估 在分布式计算机系统中,综合考虑各种因素来评估性能是一个复杂但重要的问题。以下是一种可能的方法来综合考虑评估分布式计算机性能,动态地考虑实际情…...

大数据之国产数据库_OceanBase数据库002_在centos7.9上_安装部署OceanBase001_踩坑指南_亲测可用

部署前最好看一下,部署前的要求, 主要是系统 以及系统内核版本,还有比如清理一下缓存等,按照做一做. 这些都是前置条件. 清一下缓存. 也就是说官网给的前置的条件,都要根据说明去执行一遍,如果不执行可能后面安装会报错. 然后用户最好也去创建一个用户. 注意前置...

【ETCD】【源码阅读】深入解析 EtcdServer.run 函数

EtcdServer.run 是 etcd 的核心运行逻辑之一&#xff0c;负责管理 Raft 状态机的应用、事件调度以及集群的核心操作。本文将逐步从源码层面分析 run 函数的逻辑&#xff0c;帮助读者理解其内部机制和设计思想。 函数签名与关键职责 func (s *EtcdServer) run() {... }关键职责…...

springboot/ssm校内订餐系统Java代码web项目美食外卖点餐配送源码

springboot/ssm校内订餐系统Java代码web项目美食外卖点餐配送源码 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff…...

floodfill算法

目录 什么是floodfill算法 题目一——733. 图像渲染 - 力扣&#xff08;LeetCode&#xff09; 题目二——200. 岛屿数量 - 力扣&#xff08;LeetCode&#xff09; 题目三——695. 岛屿的最大面积 - 力扣&#xff08;LeetCode&#xff09; 题目四—— 130. 被围绕的区域 …...

【JAVA】六亮增加贴

James Gosling&#xff08;詹姆斯.高斯林&#xff09; Java 语言源于 1991 年 4 月&#xff0c;Sun 公司 James Gosling博士 领导的绿色计划(Green Project) 开始启动&#xff0c;此计划最初的目标是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序…...

从nano-SIM标准之争看硬件设计:兼容性、防呆与产业博弈

1. 项目概述&#xff1a;一场关于“小卡片”的巨头战争 在消费电子行业&#xff0c;我们常常把目光聚焦在芯片制程、屏幕刷新率或者摄像头传感器尺寸这些“大件”上。但作为一名浸淫硬件设计多年的工程师&#xff0c;我深知&#xff0c;真正决定用户体验和产品成败的&#xff0…...

汽车电子安全:从CAN总线到纵深防御的嵌入式安全实战

1. 从“汽车黑客”到“数字堡垒”&#xff1a;一位嵌入式工程师的十年安全观演进十多年前&#xff0c;当EE Times那场关于“汽车黑客是否值得担忧”的在线聊天发起时&#xff0c;我正埋头于一个汽车ECU&#xff08;电子控制单元&#xff09;的底层驱动开发。彼时&#xff0c;“…...

Wireshark解密不止于IPSec:一份TLS/SSL、HTTPS、SSH等常见加密协议的解密指南

Wireshark解密不止于IPSec&#xff1a;一份TLS/SSL、HTTPS、SSH等常见加密协议的解密指南 当你面对一个加密的网络流量时&#xff0c;是否曾感到无从下手&#xff1f;无论是调试HTTPS API调用、分析SSH连接问题&#xff0c;还是研究QUIC协议的行为&#xff0c;加密流量总是像一…...

Nigate:让Mac与Windows硬盘和谐共处的开源桥梁

Nigate&#xff1a;让Mac与Windows硬盘和谐共处的开源桥梁 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management for NTFS …...

别再只写客户端了!用C语言搞定聊天室全栈开发:客户端+服务端联调避坑指南

别再只写客户端了&#xff01;用C语言搞定聊天室全栈开发&#xff1a;客户端服务端联调避坑指南 在C语言全栈开发中&#xff0c;客户端和服务端的联调往往是开发者最容易踩坑的环节。很多初学者能够独立完成客户端或服务端的代码编写&#xff0c;但当两者需要协同工作时&#x…...

怎样高效管理微信社交网络:5个微信工具箱实用技巧完整指南

怎样高效管理微信社交网络&#xff1a;5个微信工具箱实用技巧完整指南 【免费下载链接】wechat-toolbox WeChat toolbox&#xff08;微信工具箱&#xff09; 项目地址: https://gitcode.com/gh_mirrors/we/wechat-toolbox 微信工具箱&#xff08;wechat-toolbox&#xf…...

青少年情绪障碍辅导机构大筛选,教你选流程规范的靠谱机构

一、为什么要看这份榜单当孩子出现情绪障碍&#xff0c;如叛逆、抑郁、焦虑等问题时&#xff0c;家长往往会感到焦虑和无助&#xff0c;不知道该选择哪家辅导机构。一份客观、专业的辅导机构榜单&#xff0c;可以为家长提供有价值的参考&#xff0c;帮助他们快速了解不同机构的…...

别再只会scp了!Ansible copy和file模块的5个实战场景,从配置文件分发到权限管理

别再只会scp了&#xff01;Ansible copy和file模块的5个实战场景&#xff0c;从配置文件分发到权限管理 如果你还在用scp或rsync手动同步服务器文件&#xff0c;每次修改权限都要逐台登录操作&#xff0c;那么这篇文章将彻底改变你的运维工作流。Ansible的copy和file模块不仅能…...

2026免费照片去水印软件App排行榜,手机电脑去水印哪款好用?实测推荐

2026免费照片去水印软件App排行榜&#xff0c;手机电脑去水印哪款好用&#xff1f;实测推荐 图片上的水印去不掉&#xff0c;一直是不少人的痛点。从社交平台保存下来的图片带着平台Logo&#xff0c;下载的素材图带有版权标识&#xff0c;或者照片里不小心拍到广告文字——这些…...

Perfmon性能计数器深度解析:从指标选取到瓶颈定位实战

1. Perfmon性能计数器入门&#xff1a;为什么它是Windows运维的瑞士军刀 第一次接触Perfmon&#xff08;Performance Monitor&#xff09;是在十年前处理一台频繁卡顿的数据库服务器时。当时我尝试了各种工具都找不到问题根源&#xff0c;直到一位老工程师教我打开了这个Window…...