leetcode — 动态规划 — 打家劫舍、完全平方数

1 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

示例 1:

输入:[1,2,3,1]
输出:4
解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。

示例 2:

输入:[2,7,9,3,1]
输出:12
解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。偷窃到的最高金额 = 2 + 9 + 1 = 12 。

思路:动态规划

1、边界条件

当只有一间房时,则只能偷窃该房

当只有两件房时,则选择偷窃金额大的房间

2、动态规划方程

当偷窃第K间房时,不能偷窃第k-1间房,总金额为前k-2间房的最高金额加上第K间房的金额之和

当偷窃第K-1间房时,偷窃总金额为前k-1间房的最大总金额

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

代码

class Solution {public int rob(int[] nums) {// 数组判空if(nums == null || nums.length == 0){return 0;}int length = nums.length;if(length == 1){return nums[0];}// 定义动态规划数组 并用于返回最终结果int[] dp = new int[length];// 定义边界条件dp[0] = nums[0];dp[1] = Math.max(nums[0], nums[1]);// 循环数组 从第三间房开始循环for(int i = 2; i < length; i++){dp[i] = Math.max(dp[i-2] + nums[i], dp[i-1]);}return dp[length-1];}
}

 2 完全平方数

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,149 和 16 都是完全平方数,而 3 和 11 不是。

示例 1:

输入:n = 12输出:3 
解释:12 = 4 + 4 + 4

示例 2:

输入:n = 13输出:2
解释:13 = 4 + 9

方法一:动态规划

规划方程:

 这里不理解的点:为什么在后面f[i] = minn + 1?fangfa

class Solution {public int numSquares(int n) {// 初始化数组 用于存储动态规划过程中的结果int[] f = new int[n + 1];f[0] = 0;   // 0*0= 0for(int i = 1; i <= n; i++){// 初始化一个变量用于存储最小平方和int minn = Integer.MAX_VALUE;// 从1 开始遍历 求平方和for(int j = 1; j * j <= i; j++){minn = Math.min(minn, f[i - j * j]);}f[i] = minn + 1;}return f[n];}
}

 方法二:数学【四平方和定理】

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

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

相关文章

HTML5+CSS3小实例:环绕小球弹性loading动画

实例:环绕小球弹性loading动画 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge&quo…

每日汇评:受疲软的美国PCE通胀数据影响,黄金可能重拾2050美元

周四&#xff0c;黄金价格连续第二天上涨&#xff0c;逼近2050美元&#xff1b; 美元因风险重置和对美国核心个人消费支出通胀数据疲软的预期而下滑&#xff1b; 4H图上的技术面仍然有利于黄金买家&#xff1b; 周四早间&#xff0c;金价连续第二天处于上涨区间&#xff0c;向2…

言语理解与表达-郭熙-02

1、上节回顾 1.1 转折关系 1.2 因果关系 1.3 主题词 2、本课目录 3、必要条件关系 3.1 题目 4、对策类 4.1 题目 5、反面论证 提对策 题目 6、必要关系总结 7、程度词 题目 易错&#xff1a; 8、并列关系 题目 易错&#xff1a;

java图形用户界面设计基础,腾讯面试java

理论篇 实践篇 理论模块 理解集群控制器 集群网络详解 集群伸缩原理 认证与调度 集群服务的三个要点和一种实现 镜像拉取 实践 读懂这一篇&#xff0c;集群节点不下线 节点下线姊妹篇 我们为什么会删除不了集群的命名空间? ![震惊,阿里P8都在用的深入浅出kubernetes&#x…

前端,测试,后端,该如何选择?

前端开发&#xff0c;测试&#xff0c;后端&#xff0c;该如何选择&#xff1f;说实话&#xff0c;只要对互联网行业有了解的&#xff0c;都会推荐你学测试。 首先必须声明&#xff0c;能在前端开发、测试、后端&#xff08;主要是Java&#xff09;这三个岗位中进行选择&#…

【深度优先搜索】【图论】【推荐】332. 重新安排行程

作者推荐 动态规划的时间复杂度优化 本文涉及知识点 深度优先搜索 图论 LeetCode332. 重新安排行程 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&a…

correlated double sampling (CDS)相关双采样

目录 原理内部电路和时序使用时注意事项1.内部电路非匹配2.时序要求精确 学习资料 原理 correlated double sampling (CDS)相关双采样&#xff0c;主要用在图像传感器image sensor CMOS和CCD中。 处理流程如下&#xff1a; 采集复位信号采集真正的信号真正的信号-复位信号实…

AI时代的产品文案秘籍:如何用AI提升效率

人工智能写作工具&#xff1a;解放双手&#xff0c;创作不停歇 在当前人工智能技术飞速发展的背景下&#xff0c;越来越多的个体已经开始利用这一AI写作工具&#xff0c;以显著提高自己的工作效率。这不仅标志着人工智能服务于人类的宏伟时代的到来&#xff0c;更是人人可用的创…

深度学习--神经网络基础

神经网络 人工神经网络&#xff08; Artificial Neural Network &#xff0c; 简写为 ANN &#xff09;也简称为神经网络&#xff08; NN &#xff09;&#xff0c;是一种模仿生物神经网络结构和 功能的计算模型 。人脑可以看做是一个生物神经网络&#xff0c;由众多的 神经元…

Sectigo SSL证书有什么优势?

在全球范围内&#xff0c;Sectigo作为一家备受信赖的数字证书颁发机构&#xff0c;以其强大的安全性、出色的性价比和卓越的品牌形象赢得了广大用户的青睐。本文将深入剖析Sectigo SSL证书在这些方面的卓越表现。 一、安全性 1. 强大加密技术 Sectigo SSL证书采用行业标准的加…

高校水电预付费管控系统

高校水电预付费管控系统在现代高校管理中扮演着重要角色。这一系统通过整合先进的科技手段&#xff0c;如智能计量设备和互联网技术&#xff0c;实现对校园水电消费的精准监控和管理。首先&#xff0c;高校水电预付费管控系统能够有效监测学生宿舍、教学楼等区域的实时用水用电…

Java实战:构建高效预报名管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

单/双通道40V 350mA车规级LDO稳压器高集成电流感应调节

概述 PC8803具有高输入电压单低压差调节器&#xff08;PC8803SC01/PC8803SCO3&#xff09;/双通道低压差调节&#xff08;PC8803SC02/PC8803SC04&#xff09;&#xff0c;具有精确的电流感测&#xff0c;设计用于在宽输入电压范围内工作 从4.5V到40V。该设备具有45V负载转储电…

Redis String 类型底层揭秘

目录 前言 String 类型低层数据结构 节省内存的数据结构 前言 Redis 的 string 是个 “万金油” &#xff0c;这么评价它不为过. 它可以保存Long 类型整数&#xff0c;字符串&#xff0c; 甚至二进制也可以保存。对于key&#xff0c;value 这样的单值&#xff0c;查询以及插…

【C++】结构体内存对齐详解

规则 1.第一个成员在结构体变量偏移量为0 的地址处&#xff0c;也就是第一个成员必须从头开始。 2.其他成员的偏移量为对齐数**(该成员的大小 与 编译器默认的一个对齐数 中的较小值)**的整数倍。 3.结构体总大小对最大对齐数&#xff08;通过最大成员来确定&#xff09;的整数…

Oracle 直接路径插入(Direct-Path Insert)

直接路径插入&#xff08;Direct Path Insert&#xff09;是Oracle一种数据加载提速技术&#xff0c;可以在使用insert语句或SQL*Loader工具大批量加载数据时使用。直接路径插入处理策略与普通insert语句完全不同&#xff0c;Oracle会通过牺牲空间&#xff0c;安全性&#xff0…

opengles 绘制图元 ——glDrawArrays() 相关API介绍 (十)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、opengles3.0 绘制图元介绍二、绘图图元 API 介绍1. glDrawArrays()1.1 glDrawArrays()函数原型1.2 GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN 三者的区别1.3 使用GL_TRIANGLES, G…

springboot+maven项目导入本地jar包,以有打包错误问题

1 本地jar包放置路径为&#xff1a; 2添加Modules File->project settings–>Modules–>Dependencies–>–>, 3 添加 Libraies 至此 项目即可成功运行。 mvn 打包错误&#xff0c;需要 运行以下命令 mvn install:install-file -Dfile${project.basedir}/s…

52.2k star! 自己部署gpt4free, 免费使用各种GPT

GPT4Free是一个由开发者Xtekky在GitHub上发布的开源项目&#xff0c;它可以免费地使用GPT-3.5、GPT-4、llama、gemini-pro、bard、claude等多种大模型。截止到当前(2024.1.30)已经有52.2k star&#xff0c;可见其受欢迎程度。 github地址&#xff1a;https://github.com/xtekky…

拜登:“一切非 Rust 项目均为非法”,开发界要大变天?

文章目录 科技巨头应为安全漏洞负起责任使用其他语言的开发者​该何去何从&#xff1f; 白宫国家网络总监办公室&#xff08;ONCD&#xff0c;以下简称网总办&#xff09;在本周一发布的报告中说道&#xff1a;“程序员编写代码并非没有后果&#xff0c;他们的⼯作⽅式于国家利…