Day50.算法训练

编程入门 行业动态 更新时间:2024-10-28 09:18:49

Day50.<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法训练"/>

Day50.算法训练

198. 打家劫舍

class Solution {public int rob(int[] nums) {if(nums.length ==1){return nums[0];}int[] dp = new int[nums.length];dp[0] = nums[0];dp[1] = Integer.max(nums[0], nums[1]);for (int i = 2; i < nums.length; i++) {dp[i] = Integer.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];}int rob1 = rob2(Arrays.copyOfRange(nums, 0, nums.length - 1));int rob2 = rob2(Arrays.copyOfRange(nums, 1, nums.length));return Integer.max(rob1, rob2);}public int rob2(int[] nums) {if (nums.length == 1) {return nums[0];}int[] dp = new int[nums.length];dp[0] = nums[0];dp[1] = Integer.max(nums[0], nums[1]);for (int i = 2; i < nums.length; i++) {dp[i] = Integer.max(dp[i - 1], dp[i - 2] + nums[i]);}return dp[nums.length - 1];}}

337. 打家劫舍 III

class Solution {public int rob(TreeNode root) {int[] ints = rob2(root);return Integer.max(ints[0], ints[1]);}public int[] rob2(TreeNode root) {if (root == null) {return new int[]{0, 0};}int[] leftDp = rob2(root.left);int[] rightDp = rob2(root.right);int val1 = Integer.max(leftDp[0], leftDp[1]) + Integer.max(rightDp[0], rightDp[1]);int val2 = root.val + leftDp[0] + rightDp[0];return new int[]{val1, val2};}
}

更多推荐

Day50.算法训练

本文发布于:2023-11-15 21:24:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1606591.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!