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

代码随想三刷动态规划篇7

代码随想三刷动态规划篇7

  • 198. 打家劫舍
    • 题目
    • 代码
  • 213. 打家劫舍 II
    • 题目
    • 代码
  • 337. 打家劫舍 III
    • 题目
    • 代码
  • 121. 买卖股票的最佳时机
    • 题目
    • 代码

198. 打家劫舍

题目

链接

代码

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[] dp = new int[nums.length];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-1],dp[i-2]+nums[i]);}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[] dpLeft = new int[nums.length];//不偷最后一个int[] dpRight = new int[nums.length];//不偷第一个dpLeft[0] = nums[0];dpLeft[1] = Math.max(nums[0],nums[1]);dpRight[1] = nums[1];if(nums.length>=3){dpRight[2] = Math.max(nums[1],nums[2]);}for(int i =2;i<nums.length-1;i++){//不偷最后一个dpLeft[i] = Math.max(dpLeft[i-1],dpLeft[i-2]+nums[i]);}for(int i =3;i<nums.length;i++){//不偷前一个dpRight[i] = Math.max(dpRight[i-1],dpRight[i-2]+nums[i]);}return Math.max(dpLeft[nums.length-2],dpRight[nums.length-1]);}
}

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 {Map<TreeNode,Integer> map = new HashMap();public int rob(TreeNode root) {if(root==null){return 0;}if(map.containsKey(root)){return map.get(root);}int money = root.val;if(root.left!=null){money+=rob(root.left.left)+rob(root.left.right);}if(root.right!=null){money+=rob(root.right.left)+rob(root.right.right);}int res = Math.max(money,rob(root.left)+rob(root.right));map.put(root,res);return res;}
}

121. 买卖股票的最佳时机

题目

链接

代码

class Solution {public int maxProfit(int[] prices) {int[][] dp = new int[prices.length][2];dp[0][0] = 0;dp[0][1] = -prices[0];for(int i = 1;i<prices.length;i++){dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]+prices[i]);dp[i][1] = Math.max(dp[i-1][1],-prices[i]);}return dp[prices.length-1][0];}
}
http://www.lryc.cn/news/390652.html

相关文章:

  • linux应用开发基础知识(八)——内存共享(mmap和system V)
  • 上海小程序开发需要进行定制开发吗?
  • Qt开发 | qss简介与应用
  • 模块一SpringBoot(一)
  • C语言 | Leetcode C语言题解之第213题打家劫舍II
  • ​​​​Linux LVS 负载均衡群集
  • onTouch()与onTouchEvent()的区别
  • 计算机网络网络层复习题2
  • [JS]面向对象ES6
  • ctfshow web sql注入 web242--web249
  • 发送微信消息和文件
  • 数组-螺旋矩阵
  • GitStack详细配置与使用指南
  • LoadRunner-Virtual User Generator组件学习
  • NAT地址转换实验,实验超简单
  • pip常用命令详解
  • vue3从入门到精通
  • kubuadm 方式部署 k8s 集群
  • Android studio 打包低版本的Android项目报错
  • 【教程】lighttpd配置端口反向代理
  • 微服务之服务保护策略【持续更新】
  • 微信小程序的开发
  • Oracle中CREATE FORCE VIEW的说明和例子
  • C#反射基本应用
  • 1.英语中的从句学习
  • Perl语言简介
  • 【SpringBoot3】使用Jasypt加密数据库用户名、密码等敏感信息
  • 如何确定MySQL中哪些列适合做索引
  • C# winform中权限页面的设计和开发
  • 本地Windows电脑 连接 Windows 服务器