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

2024.8.23 刷题总结

2024.8.23

**每日一题**

198.打家劫舍,这道题是一道简单的入门动态规划问题,根据题目意思,我们不能取数组中相邻的元素然后还必须满足总结果最大,所以我们可以维护一个数组,用来保存在数组每个位置之前能取到的最大值,然后最后输出第n-1个元素的值即为答案。

转移公式如下:

 dp[i]=max(dp[i-2]+nums[i],dp[i-1]);

class Solution {
public:int rob(vector<int>& nums) {int n = nums.size();if(n==1) return nums[0];vector<int> dp(n,0);dp[0]=nums[0];dp[1]=max(nums[0],nums[1]);for(int i = 2;i<n;i++){dp[i]=max(dp[i-2]+nums[i],dp[i-1]);}return dp[n-1];}
};

279.完全平方数,这道题考察的是动态规划的知识,依题意得,我们需要找到最少的平方数之和使得等于要求的数,我们首先会想到用离该数最近的完全平方数来考虑,但是这样不方便枚举和遍历,所以我们采用动态规划的一般方法,先处理前面的数,再遍历到后面的数。本题需要维护一个到当前位置需要最少完全平方数的数组,然后开始从1遍历到n,这期间需要枚举所有小于i的完全平方数用来找到最小的答案,每次循环起点将dp[i]设置为i,因为这是最多的情况,然后依次比较取最小值,转移方程如下:

 dp[i]=min(dp[i],dp[i-j*j]+1);

class Solution {
public:int numSquares(int n) {vector<int> dp(n+1,0);dp[0]=0;dp[1]=1;for(int i = 2;i<=n;i++){dp[i]=i;for(int j =1;j*j<=i;j++){dp[i]=min(dp[i],dp[i-j*j]+1);}}return dp[n];  }
};

 322.零钱兑换,这道题是考察动态规划的知识,本题也是仿照一般的动态规划的状态转移的思想来完成。首先我们需要维护一个数组表示达到每个金额需要的最少硬币数目,然后遍历求值,第一个状态为金额,从1遍历到n,第二个状态是用的硬币种类,从0遍历到数组末尾,如果当前金额一直低于硬币面额就继续,否则就更新当前所需数目最小值,最后输出所需金额的数目:

 dp[i]=min(dp[i],dp[i-coins[j]]+1);

class Solution {
public:int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount+1,amount+1);dp[0]=0;int n = coins.size();for(int i = 0;i<=amount;i++){for(int j = 0;j<n;j++){if(i-coins[j]<0) continue;dp[i]=min(dp[i],dp[i-coins[j]]+1);}}return (dp[amount]==amount+1) ? -1 : dp[amount]; }
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【clickhouse】访问clickhouse数据库,并且插入数据
  • Solidworks二次开发:样条曲线、平移、旋转和扫描切除
  • 自定义@ResponseBody以及SpringMVC总结
  • 唯有自救,才能得救
  • uniapp(微信小程序如何使用单选框、复选框)
  • PyTorch升级之旅——安装与基本知识
  • 基于Springboot和BS架构的宠物健康咨询系统pf
  • 【Material-UI】Radio Group中的 Label Placement 属性详解
  • 嵌入式企业面试真题
  • 【学习笔记】时间序列模型(ARIMA)
  • Java | Leetcode Java题解之第357题统计各位数字都不同的数字个数
  • 前端实现投影坐标和地理坐标系(CGCS2000)转换
  • PostgreSQL 不完全兼容 Oracle 的 SQL 语法,如何模拟功能?
  • 深入理解 Vue 2 的双向绑定原理与实现
  • 【设计模式】单例模式和生产者消费者模型
  • [译]CSS 居中(Center)方法大合集
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 《Java编程思想》读书笔记-对象导论
  • 10个最佳ES6特性 ES7与ES8的特性
  • Apache Zeppelin在Apache Trafodion上的可视化
  • AWS实战 - 利用IAM对S3做访问控制
  • Consul Config 使用Git做版本控制的实现
  • echarts的各种常用效果展示
  • GitUp, 你不可错过的秀外慧中的git工具
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • ng6--错误信息小结(持续更新)
  • passportjs 源码分析
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • SpringBoot几种定时任务的实现方式
  • 编写符合Python风格的对象
  • 创建一个Struts2项目maven 方式
  • 从setTimeout-setInterval看JS线程
  • 基于webpack 的 vue 多页架构
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 普通函数和构造函数的区别
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前端相关框架总和
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 项目管理碎碎念系列之一:干系人管理
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 最简单的无缝轮播
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • #14vue3生成表单并跳转到外部地址的方式
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • $$$$GB2312-80区位编码表$$$$
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (PADS学习)第二章:原理图绘制 第一部分
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (备份) esp32 GPIO
  • (力扣)循环队列的实现与详解(C语言)
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (学习日记)2024.02.29:UCOSIII第二节