首页 > 其他分享 >213. 打家劫舍 II(leetcode)

213. 打家劫舍 II(leetcode)

时间:2024-09-04 19:47:29浏览次数:4  
标签:选择 213 int house II 房屋 leetcode cn

https://leetcode.cn/problems/house-robber-ii/description/

灵神题解:

https://leetcode.cn/problems/house-robber-ii/solutions/2445622/jian-ji-xie-fa-zhi-jie-diao-yong-198-ti-qhvri/

class Solution {
    public int rob(int[] nums) {
        // f[i]表示前i个房屋选能获得的最大金额
        // 以第i个房屋选还是不选划分子集,由于是环状,因此选第i个房屋,则需要考虑i-1,i+1都不能选择
        // 这里无法处理i+1,只能分为选或者不选第一个房屋的情况,
        // 1.不选择第一个房屋的情况,则最后一个房屋可以选择,i可以等于nums.length-1
        // 2.选择第一个房屋的情况,最后一个房屋不能选择 , i<nums.length-1
        // 状态方程一样,但是初值不同,
        // f[i]=max(f[i-2]+nums[i],f[i-1])
        // 1.f[1]=nums[0],2.f[1]=0 这里f[1]和上面状态方程的下标有偏移一位
        int N = 110;
        int[] f=new int[N];
        f[1]=nums[0];
        int res=0;
        for(int i=2;i<=nums.length-1;i++)
        {
            f[i]=Math.max(f[i-2]+nums[i-1],f[i-1]);
            res=Math.max(res,f[i]);
        }
        Arrays.fill(f,0);
        f[1]=0; // 可以省略,但是为了表述清楚,保留
        for(int i=2;i<=nums.length;i++)
        {
            f[i]=Math.max(f[i-2]+nums[i-1],f[i-1]);
            res=Math.max(res,f[i]);
        }
        return res;
    }
}

 

标签:选择,213,int,house,II,房屋,leetcode,cn
From: https://www.cnblogs.com/lxl-233/p/18397244

相关文章

  • 139. 单词拆分(leetcode)
    https://leetcode.cn/problems/word-break/description/classSolution{publicbooleanwordBreak(Strings,List<String>wordDict){//思路较为巧妙,和传统背包定义不同//f[i]表示长度为i的字符串能否被wordDict里的单词凑成//状态转义方......
  • 最大上升子序列 II
    序列:可以不连续,但与原数列当中出现的先后顺序要相同;上升子序列:需要满足单调性-单调递增算法1(贪心+二分)O(nlogn)时间复杂度二分查找一个数的最小的最大值O(logn);一共有n个数进行二分O(nlogn);贪心分析样例:731218561.首先分析长度为1的上升子序列—......
  • IIS相关错误报错汇总整理及解决方案
    解决方案400BadRequest:检查请求是否包含错误的信息或格式。401Unauthorized:确认是否已经进行了身份验证。403Forbidden:检查是否有足够的权限访问资源。404NotFound:确认请求的URL是否正确,资源是否存在。500InternalServerError:检查服务器日志,寻找错误信息。503Ser......
  • LeetCode刷题—数组
    一:数组操作1、数组:在连续的内存空间当中;存储一组相同类型的元素2、元素和索引:数组的索引下标从0开始3、数组的访问和数组的搜索(1)数组的访问a=[1,2,3]a[1]=2#数组的访问;通过下标索引进行访问(2)数组的搜索a=[1,2,3]foriina:print(i)4、数组的四种方法访问0(1)......
  • Java毕设项目II基于SSM的文学网的设计与实现
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言随着互联网技术的蓬勃发展,数字化阅读已成......
  • Java毕设项目II基于SSM的校园自助洗衣系统的设计与实现
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言随着互联网技术的飞速发展和普及,信息管理......
  • 2024.9.4 leetcode169 多数元素 (C++)
    题面https://leetcode.cn/problems/majority-element/description/ 解答一开始想得比较暴力,直接把对应数字当数组下标,遇到对应数字,数组++,但不知道怎么处理-10^9~10^9的数据大小,后来想了一个办法,那就是先排序,再求连续的个数,个数大于n/2的时候,return结果。太久没接触C++语法、......
  • 【数据结构和算法实践-树-LeetCode100-判断是否是相同的树】
    数据结构和算法实践-树-LeetCode100-判断是否是相同的树题目MyThought代码示例JAVA-8题目给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例输入:p=[1,2,3],q=[1,2......
  • 【数据结构和算法实践-链表-LeetCode23-合并K个有序数组】
    合并K个有序数组题目MyThought代码示例JAVA-8题目合并K个有序数组MyThought一、将ListNode放入PriorityQueue中1.1、设置PriorityQueue的比较器规则1.2、将ListNode[]放入priorityQueue二、再将数据依次弹出放到ListNode中代码示例JAVA-8publicListNod......
  • 代码随想录算法训练营|Day06 LeetCode 242.有效的字母异位词,349.两个数组的交集,202.快
    理论知识哈希表是根据关键码的值而直接进行访问的数据结构,一般用来快速判断一个元素是否出现在集合里映射——哈希函数哈希碰撞线性探测法拉链法常用的哈希结构数组set(集合)map(映射)242.有效的字母异位词242.有效的字母异位词-力扣(LeetCode)classSolution{......