首页 > 其他分享 >#yyds干货盘点# 面试必刷TOP101:打家劫舍(二)

#yyds干货盘点# 面试必刷TOP101:打家劫舍(二)

时间:2022-10-10 16:36:49浏览次数:59  
标签:yyds nums int 房间 length 数组 必刷 TOP101 dp

1.简述:

描述

你是一个经验丰富的小偷,准备偷沿湖的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家,如果偷了第二家,那么就不能偷第一家和第三家。沿湖的房间组成一个闭合的圆形,即第一个房间和最后一个房间视为相邻。

给定一个长度为n的整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。

数据范围:数组长度满足 ,数组中每个值满足 

示例1

输入:

[1,2,3,4]

返回值:

6

说明:

最优方案是偷第 2 4 个房间
示例2

输入:

[1,3,6]

返回值:

6

说明:

由于 1 和 3 是相邻的,因此最优方案是偷第 3 个房间

2.代码实现:

import java.util.*;
public class Solution {
public int rob (int[] nums) {
//dp[i]表示长度为i的数组,最多能偷取多少钱
int[] dp = new int[nums.length + 1];
//选择偷了第一家
dp[1] = nums[0];
//最后一家不能偷
for(int i = 2; i < nums.length; i++)
//对于每家可以选择偷或者不偷
dp[i] = Math.max(dp[i - 1], nums[i - 1] + dp[i - 2]);
int res = dp[nums.length - 1];
//清除dp数组,第二次循环
Arrays.fill(dp, 0);
//不偷第一家
dp[1] = 0;
//可以偷最后一家
for(int i = 2; i <= nums.length; i++)
//对于每家可以选择偷或者不偷
dp[i] = Math.max(dp[i - 1], nums[i - 1] + dp[i - 2]);
//选择最大值
return Math.max(res, dp[nums.length]);
}
}

标签:yyds,nums,int,房间,length,数组,必刷,TOP101,dp
From: https://blog.51cto.com/u_15488507/5744733

相关文章

  • #yyds干货盘点#【愚公系列】2022年10月 微信小程序-全局配置属性之入口页面
    前言一、entryPagePath1.入口文件的配置指定小程序的默认启动路径(首页),常见情景是从微信聊天列表页下拉启动、小程序列表启动等。如果不填,将默认为pages列表的第一项。......
  • #yyds干货盘点#
    前序遍历,然后依照图利用二叉树的右半边树构建链表,注意要清空左子树,因为检测机制可能是层序遍历/***<p>给你二叉树的根结点<code>root</code>,请你将它展开为一个单链表:<......
  • #yyds干货盘点#前端架构API层的封装
    上午好,今天为大家分享下个人对于前端​​API​​​层架构的一点经验和看法。架构设计是一条永远走不完的路,没有最好,只有更好。这个道理适用于软件设计的各个场景,前端​​API......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百零九题-双向数据绑定
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从......
  • # yyds干货盘点 # 我在修改jupyter字体的时候输入命令jt -l 遇到了jt既不是内部也不是
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【Joker】问了一个​​Jupyternotebook​​报错的问题,提问截图如下:下面是他的报错截图:二、实现过程这里【论草......
  • #yyds干货盘点#慎用JSON.stringfy
    项目中遇到一个bug,一个组件为了保留一份JSON对象,使用JSON.stringify将其转换成字符串,这样做当然是为了避免对象是引用类型造成数据源的污染。但发现后面使用JSON.pars......
  • 软件测试工程师面试必刷题
    1.软件测试的流程是什么?1)需求评审2)测试用例编写、评审3)开发自测4)冒烟测试5)功能测试6)性能测试7)预发布、线上回归测试8)测试用例持续集成、归档,自动化用例完善2.fidd......
  • #yyds干货盘点#Vue3的reactive
    最近一阶段在学习Vue3,Vue3中用 ​​reactive​​、​​ref​​ 等方法将数据转化为响应式数据,在获取时使用 ​​track​​ 往 ​​effect​​ 中收集依赖,在值改变时,使......
  • #yyds干货盘点# LeetCode 热题 HOT 100:最小路径和
    题目:给定一个包含非负整数的m x n 网格 grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。 示例1:输入:grid=......
  • #yyds干货盘点# 按工程阶段划分的测试
    (1)单元测试是最小单位的测试活动,也称为模块测试。单元测试是封闭在单元内部的测试,关注一个单元是否正确地实现了规定的功能、逻辑是否正确、输入输出是否正确,从而寻找模块内......