首页 > 编程语言 >代码随想录算法训练营第三十六天| 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

代码随想录算法训练营第三十六天| 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

时间:2023-07-24 09:12:28浏览次数:43  
标签:打家劫舍 198 nums max 随想录 第三十六 dp size

 198.打家劫舍 

要求:

给定一个nums,要求取得最大值,但是不可以选择两个相邻的数

dp定义:

dp[n],取到第N个数字的时候,最大值

递推公式:

取:nums[i] + dp[j-2]

不取: nums[i-1];

代码:

 1 // 在两个数字不相邻的情况下,得到的最大金额
 2 // 思路:
 3 // dp[n] 第N个数字时的最大金额数
 4 // 难点:
 5 //  1,如何做到全局最大 4 7 9 1
 6 //  2,中间还可能不相隔 2 1 1 2 
 7 // 
 8 // dp[j] 取,不取
 9 // dp[j-1] , value[i]+dp[j-2];.
10 // 
11 // 初始化?因为第0个也不一定被拿到
12 // 
13 // 根据定义:dp[0] = nums[0] dp[1] = max
14 // 
15 // 如何巧妙的可以用到之前的数值,同时不固定必须的选择顺序,
16 // dp = max(dp[j-1], nums[1]+dp[j-2])
17 //
18 int rob(vector<int>& nums) {
19     if (nums.size() == 1)return nums[0];
20 
21     vector<int>dp(nums.size(), 0);
22     dp[0] = nums[0];
23     dp[1] = max(nums[0], nums[1]);
24 
25     for (int i = 2; i < nums.size(); i++)
26     {
27         dp[i] = max(dp[i - 1], nums[i] + dp[i - 2]);
28     }
29 
30     return dp[nums.size() - 1];
31 }

 

标签:打家劫舍,198,nums,max,随想录,第三十六,dp,size
From: https://www.cnblogs.com/smartisn/p/17576375.html

相关文章

  • 代码随想录-链表-C++总结
    代码随想录(programmercarl.com)这次复习的主要目的还是熟练c++的基本语法知识,顺带过一下链表的典型题目印象深刻直接没做出来的有7.链表相交,没有想到先过一遍求出两条链表的长度,然后通过长度差的信息来get交点做的时候写出bug的有3.设计链表,涉及的基础思想还是比较多的,需......
  • 代码随想录贪心专题-day1
    35.分发糖果n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到1个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的最少糖果数目。思路:本题这......
  • 代码随想录训练营 Day01- 数组(上)
    概述第一天主要学习的是数组相关的内容,相关学习的内容包括数组的基本特性的学习,二分搜索方法的学习。数组特点数组的基本特点包括:下标从0开始内存连续性(Java中定义数组需要直接声明其空间大小)数组元素不可以删,只能覆盖ArrayList底层是数组实现,其实际上应该叫一......
  • 代码随想录算法训练营第三十三天| 1049. 最后一块石头的重量 II 494. 目标和 474.一
    1049.最后一块石头的重量II思路:因为含有两个石头的相撞,所以需要把dp的目标值改成sum/2,然后取得这个目标值的最大值,然后对sum-2*target代码:1//要求:有多个石头,两两撞击,取得剩下的石头的最小值2//——》一定要碰到最后一个3//注意:4//1,x==y:两个粉碎,x<y:y=......
  • 代码随想录算法训练营第57天 | ● 647. 回文子串 ● 516.最长回文子序列 ● 动
     第九章 动态规划part17●  647. 回文子串  ●  516.最长回文子序列●  动态规划总结篇 今天 我们就要结束动态规划章节了,大家激不激动!!!   详细布置   647. 回文子串    动态规划解决的经典题目,如果没接触过的话,别硬想 直接看题解。https:......
  • 代码随想录算法训练营第58天 | ● 739. 每日温度 ● 496.下一个更大元素 I - 第1
     第十章 单调栈part01 ●  739. 每日温度 ●  496.下一个更大元素 I    详细布置    739. 每日温度  今天正式开始单调栈,这是单调栈一篇扫盲题目,也是经典题。 大家可以读题,思考暴力的解法,然后在看单调栈的解法。 就能感受出单调栈的巧妙 ......
  • 代码随想录算法训练营第59天 | ● 503.下一个更大元素II ● 42. 接雨水 - 第10章
     第十章 单调栈part02 ●  503.下一个更大元素II ●  42. 接雨水    详细布置   503.下一个更大元素II  这道题和 739. 每日温度 几乎如出一辙,可以自己尝试做一做 https://programmercarl.com/0503.%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%......
  • 代码随想录算法训练营第60天 | ● 84.柱状图中最大的矩形 - 第10章 动态规划part03
     第十章 单调栈part03有了之前单调栈的铺垫,这道题目就不难了。  ●  84.柱状图中最大的矩形   今天是训练营最后一天,恭喜坚持两个月的录友们,接下来可以写一篇自己 代码随想录一刷的总结。好好回顾一下,这两个月自己的博客内容,以及自己的收获。  ......
  • 代码随想录算法训练营第三十三天| 01背包问题 二维 01背包问题 一维 416. 分割等和
    01背包问题二维 要求:有一个背包,他只能装4KG,分别有三个物品:115;320;430——》需要物品价值最大 dp[i][j]含义:在放物品I的时候在J背包容量下的物品最大值递推公式: 1,不放当前物品:dp[i-1][j]2,放当前物品:(dp[i-1][j])->不应该是在当前容量下,i-1的最大价值,应该是:dp[i-......
  • 代码随想录算法训练营第三十二天| 343. 整数拆分 96.不同的二叉搜索树
     343.整数拆分要求:将一个正数拆分成N个正整数,使得这N个正整数的乘机是最大的思路:DP数组:dp[n]N的时候,它的乘机最大值注意:不是i*dp[n-i]就是最大值,因为如果用dp就证明要开始拆分了,如果我不拆分,就是用的这两个数的话,那么就是单纯的i*(n-i)代码:1//要求:将N拆分成K......