打家劫舍(java版)

📑前言

本文主要是【动态规划】——打家劫舍(java版)的文章,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:CSDN主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见

目录

    • 📑前言
    • 打家劫舍(java版)
    • [LCR 089. 打家劫舍](https://leetcode.cn/problems/Gu0c2T/)
    • 代码:
    • [LCR 090. 打家劫舍 II](https://leetcode.cn/problems/PzWKhm/)
    • 代码:
    • 📑文章末尾

打家劫舍(java版)

LCR 089. 打家劫舍

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

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

示例 1:

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

示例 2:

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

代码:

	public static int rob(int[] nums) {int n = nums.length;//创建dp数组int dp[] = new int[n];if(n==1) {return nums[0];}//对dp[0],dp[1]的状态进行初始化dp[0]=nums[0];dp[1]=Math.max(nums[0], nums[1]);//从第三项开始,进行动态规划,要么取前i-1项,要么取前i-2项加上nums[i],因为不能取相邻的两家,不然会触发警报for(int i=2;i<n;i++) {dp[i]=Math.max(dp[i-1], dp[i-2]+nums[i]);}return dp[n-1];}

LCR 090. 打家劫舍 II

一个专业的小偷,计划偷窃一个环形街道上沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

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

示例 1:

输入:nums = [2,3,2]
输出:3
解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。

示例 2:

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

示例 3:

输入:nums = [0]
输出:0

代码:

    public static int rob(int[] nums) {int n = nums.length;if(n==1) return nums[0];int dp1[] = new int[n];//要头不要尾int dp2[] = new int[n];//不要头要尾//对dp1和dp2进行初始化处理。dp1[0]=nums[0];dp1[1]=Math.max(nums[0], nums[1]);dp2[1]=nums[1];//进行动态规划for(int i=2;i<n;i++) {dp1[i]=Math.max(dp1[i-1], dp1[i-2]+nums[i]);dp2[i]=Math.max(dp2[i-1], dp2[i-2]+nums[i]);}return Math.max(dp1[n-2], dp2[n-1]);}

📑文章末尾

在这里插入图片描述

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

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

相关文章

LeetCode.232. 用栈实现队列

题目 232. 用栈实现队列 分析 先了解一下栈和队列的特点&#xff1a; 栈&#xff1a;先进后出队列&#xff1a;先进先出 想用栈实现队列的特点&#xff0c;就需要使用两个栈。因为两个栈就可以将列表倒序。 假设第一个栈 s1 [1,2,3]&#xff0c;第二个栈 s2 [] 。若循环…

CAN通信篇 - Can模块配置(一)

文章目录 CanConfigSetCanControllersCanControllerBaudrateConfigCanFilterMask CanHardwareObjectsCanGeneralCanMainfunctionRWPeriods 总结 Can模块的是CAN控制器模块&#xff0c;该模块比较简单&#xff0c;只包括三个部分&#xff1a;Can控制器、Can硬件对象&#xff08;…

VMvare安装17安装centos8教程

阿里镜像站&#xff1a;https://mirrors.aliyun.com/centos centos-8-isos-x86_64安装包下载_开源镜像站-阿里云 https://mirrors.aliyun.com/centos/8/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso 将上面的链接复制到迅雷进行高速下载 vmvare安装配置教程安装教程 CentO…

揭秘大气颗粒物与VOCs:PMF源解析技术全解析

在现今日益严峻的环境问题中&#xff0c;大气颗粒物和臭氧污染尤为突出&#xff0c;它们不仅深刻影响着全球气候和生态环境&#xff0c;更对人体健康构成了严重威胁。为了有效应对这一挑战&#xff0c;我们首先需要深入了解颗粒物和臭氧的来源&#xff0c;特别是臭氧的前体物之…

代码随想录训练营第37天 | LeetCode 738.单调递增的数字、LeetCode 968.监控二叉树、

目录 LeetCode 738.单调递增的数字 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;贪心算法&#xff0c;思路不难想&#xff0c;但代码不好写&#xff01;LeetCode:738.单调自增的数字_哔哩哔哩_bilibili 思路 ​​​​​​LeetCode 968.监控二…

鸿蒙学习-数据持久化

应用数据持久化概述 应用数据持久化&#xff0c;是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象&#xff0c;存储介质上的数据形态可能是文本、数据库、二进制文件等。 HarmonyOS标准系统支持典型的存储数据形态…

Maven构建MapReduce程序上传至虚拟机运行找不到jdbc.Driver

问题前置&#xff1a; Maven构建MapReduce程序&#xff0c; pom中已经写入jdbc驱动&#xff0c; 上传至虚拟机运行扔找不到jdbc.Driver, 具体报错&#xff1a;java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 第一步&#xff1a;确认pom…

【AI视野·今日Sound 声学论文速览 第五十一期】Mon, 4 Mar 2024

AI视野今日CS.Sound 声学论文速览 Mon, 4 Mar 2024 Totally 6 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers VoxGenesis: Unsupervised Discovery of Latent Speaker Manifold for Speech Synthesis Authors Weiwei Lin, Chenhang He, Man Wai Mak, …

城市平均高温、平均低温数据爬取与可视化

爬取历史天气网站数据 从天气网站爬取指定城市、指定时间范围内的天气数据&#xff0c;并将数据保存为CSV文件。具体而言&#xff0c;它使用了Selenium库来模拟浏览器行为&#xff0c;以便获取动态加载的页面内容。 主要步骤如下&#xff1a; 读取城市信息和代理IP信息&…

html样式排版

<template><div class"box"><div class"header">头部</div><div class"main"><div class"left">菜单</div><div class"right"><div class"right-contentr"&g…

超分之Real-ESRGAN官方代码解读

文章目录 高阶退化过程生成用于一阶、二阶退化过程的各种模糊核&#xff0c;以及sinc滤波器具体的一阶、二阶退化过程 高阶退化过程 生成用于一阶、二阶退化过程的各种模糊核&#xff0c;以及sinc滤波器 文件位置 “basicsr/data/realesrgan_dataset.py” # ------------------…

中国企业走向世界,新加坡共和理工学院师生首站到访开源网安交流

近年来&#xff0c;中国企业在众多领域突飞猛进&#xff0c;不断追赶国际头部企业技术水平&#xff0c;甚至在某些领域已经达到国际领先水平&#xff0c;国内企业的最佳实践逐渐成为了全球精英学习研究的对象。 3月4日&#xff0c;由新加坡五所国立理工学院之一的新加坡共和理工…