当前位置: 首页 > article >正文

力扣labuladong——一刷day12

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、力扣198. 打家劫舍
  • 二、力扣213. 打家劫舍 II
  • 三、力扣337. 打家劫舍 III


前言


一、力扣198. 打家劫舍

class Solution {
    public int rob(int[] nums) {
        int[] dp = new int[nums.length];
        if(nums.length == 1)return nums[0];
        if(nums.length == 2){
            return Math.max(nums[0],nums[1]);
        }
        dp[0] = nums[0];
        dp[1] = Math.max(nums[0],nums[1]);
        for(int i = 2; i < nums.length; i ++){
            dp[i] = Math.max(dp[i-2] + nums[i], dp[i-1]);
        }
        return dp[nums.length-1];
    }
}

二、力扣213. 打家劫舍 II

class Solution {
    public int rob(int[] nums) {
        if(nums.length == 1)return nums[0];
        if(nums.length == 2)return Math.max(nums[0],nums[1]);
        int a = fun(nums,0,nums.length-2);
        int b = fun(nums, 1, nums.length-1);
        return Math.max(a,b);
    }
    public int fun(int[] nums, int low, int high){
        int[] dp = new int[nums.length];
        dp[low] = nums[low];
        dp[low+1] = Math.max(nums[low],nums[low+1]);
        for(int i = low+2; i <= high; i ++){
            dp[i] = Math.max(dp[i-2]+nums[i], dp[i-1]);
        }
        return dp[high];
    }
}

三、力扣337. 打家劫舍 III

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int rob(TreeNode root) {
        int[] dp = fun(root);
        return Math.max(dp[0],dp[1]);
    }
    public int[] fun(TreeNode root){
        int[] dp = new int[2];
        if(root == null){
            return dp;
        }
        int[] dp1 = fun(root.left);
        int[] dp2 = fun(root.right);
        dp[0] = Math.max(dp1[0],dp1[1])+ Math.max(dp2[0],dp2[1]);
        dp[1] = dp1[0]+dp2[0] + root.val;
        return dp;
    }
}

http://www.kler.cn/news/108421.html

相关文章:

  • 拿捏面试官,高频接口自动化测试面试题总结(附答案)狂收offer...
  • 是顺流还是逆流?未来物流作业是否将被机器人全面取代?
  • 安装 GMP、NTL、CTMalloc ,编译 OpenFHE
  • matlab将十六进制转换为十进制(hex2dec函数)
  • 公司电脑如何限制安装软件
  • 【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧,源码分析
  • 基于入侵杂草算法的无人机航迹规划-附代码
  • 左神算法题系列:动态规划机器人走路
  • 设置GIT代理
  • ES6 模块化编程 详解
  • 新一代AI技术,引领医疗智能革新共筑未来医疗生态
  • 红米电脑硬盘剪切
  • API商品数据接口调用实战:爬虫与数据获取
  • Web自动化测试进阶 —— Selenium模拟鼠标操作
  • selenium+python web自动化测试框架项目实战实例教程
  • 2023年9月电子学会Python等级考试试卷(五级)答案解析
  • Web:探索 SpreadJS强大的在线电子表格库
  • 批量去除影视剧中的片头片尾
  • 两数和的目标 python (初学者vs程序员)
  • 使用dirhunt无需暴力破解即可扫描Web目录
  • react动态插入样式
  • 基本微信小程序的外卖点餐订餐平台
  • 数据结构【DS】B树
  • Photoshop使用笔记总目录
  • php使用阿里云文本内容检测openapi-sdk-php
  • MAC安装stable diffusion
  • ES Module 认识
  • 给VSCode插上一双AI的翅膀
  • ThinkPHP6 多应用模式之验证码模块的配置与验证
  • Java中级面试题记录(四)