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

213. 打家劫舍 II

时间:2025-01-16 22:44:36浏览次数:1  
标签:return 213 nums max II length let 打家劫舍 Math

213. 打家劫舍 II

var rob = function(nums) {
    if (!Array.isArray(nums) || nums.some(isNaN)) {
        throw new Error("Invalid input: nums must be an array of numbers");
    }

    const n = nums.length;
    if (n === 0) return 0;
    if (n === 1) return nums[0];

    function robHelper(arr) {
        let prev = 0, curr = 0;
        for (let num of arr) {
            let temp = Math.max(curr, prev + num);
            prev = curr;
            curr = temp;
        }
        return curr;
    }

    // Case 1: Do not rob the first house
    let case1 = robHelper(nums.slice(1));
    // Case 2: Do not rob the last house
    let case2 = robHelper(nums.slice(0, n - 1));

    return Math.max(case1, case2);
};

var rob = function(nums) {
    if (nums.length === 0) return 0;
    if (nums.length === 1) return nums[0];
    if (nums.length === 2) return Math.max(nums[0], nums[1]);

    let prev1 = 0,curr1=0;
    let prev2 = 0,curr2=0;
    
    for (let i = 1; i < nums.length; i++) {
        let current = Math.max(prev1, curr1 + nums[i]);
        curr1=prev1
        prev1=current
    }
    for (let i = 0; i < nums.length-1; i++) {
        let current = Math.max(prev2, curr2 + nums[i]);
        curr2=prev2
        prev2=current
    }
    return Math.max(prev1, prev2);
};

let nums = [1,2,3]
console.log(rob(nums))



inner loop

out loop v

标签:return,213,nums,max,II,length,let,打家劫舍,Math
From: https://www.cnblogs.com/KooTeam/p/18675868

相关文章

  • 代码随想录算法训练营第8天 | 344.反转字符串,541. 反转字符串II,替换数字
    一、刷题部分1.1题目名称原文链接:代码随想录题目链接:344.反转字符串-力扣(LeetCode)1.1.1题目描述编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决......
  • 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19. 删除链表的倒数第N个节
    9-24.两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1] 提......
  • 20221320 冯泰瑞 《信息安全综合实践》课程设计报告——基于文本文件信息隐藏和二值图
    20221320冯泰瑞《信息安全综合实践》课程设计报告——基于文本文件信息隐藏和二值图像信息隐藏的回声信息隐藏算法实现任务简介隐藏原理研究发现,HAS(HumanAudioSystem,人类听觉系统)存在感知掩蔽效应,即强信号的存在会使其附近的弱信号难以被感知。因此,当回声与原声的间隔充分......
  • springboot基于Vue在线考试管理系统_3ogiiv49
    收藏关注不迷路!!......
  • 210. 课程表 II【 力扣(LeetCode) 】
    文章目录零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码零、原题链接210.课程表II一、题目描述  现在你总共有numCourses门课需要选,记为0到numCourses-1。给你一个数组prerequisites,其中prerequisites[i]=[ai,bi],表示在选修课......
  • 代码随想录Day36 | 1049.最后一块石头的重量 II,494.目标和,474.一和零
    代码随想录Day36|1049.最后一块石头的重量II,494.目标和,474.一和零1049.最后一块石头的重量视为背包问题,求解sum/2容量背包能装下的最大重量返回的是这一部分石头与另一部分的差值的绝对值代码即为经典的01背包问题classSolution{publicintlastSt......
  • STM32F1基于HAL库的学习记录实用使用教程分享(四、OLED IIC)
    往期内容STM32F1基于HAL库的学习记录实用使用教程分享(一、GPIO_Output)STM32F1基于HAL库的学习记录实用使用教程分享(二、GPIO_Input按键)STM32F1基于HAL库的学习记录实用使用教程分享(三、外部中断按键)文章目录往期内容前言一、IIC1.概念2.IIC作用3.IIC的特点II......
  • 2025/1/15 力扣每日一题(3066. 超过阈值的最少操作数 II)
    来源:LeetCode链接:https://leetcode.cn/problems/minimum-operations-to-exceed-threshold-value-ii/description/?envType=daily-question&envId=2025-01-15题目:给你一个下标从0开始的整数数组nums和一个整数k。一次操作中,你将执行:选择nums中最小的两个整数x和y......
  • 20221320冯泰瑞《密码系统设计》第十二周
    20221320冯泰瑞《密码系统设计》第十二周学习内容HeadFirstC嗨翻C语言第12章课程mindmapAI对学习内容的总结要求让AI(kimi,元宝等)阅读学习内容并进行总结,教材内容可以使用微信读书或者云班课电子教材总结《HeadFirstC》第十二章的内容主要介绍了如何在C语言中使......
  • 20221320冯泰瑞—阅读习惯(选做)
    阅读习惯(选做)1.推荐参考批判性思维书单https://weread.qq.com/misc/booklist/3107758_7sb8Fs2Hv,机关公文写作书单https://weread.qq.com/misc/booklist/3107758_7TeJ68iPx,公务员素质书单https://weread.qq.com/misc/booklist/3107758_7usfrsrTZ从中选择阅读,养成阅读习惯2.提......