【代码随想录】算法训练计划48

dp

1、198. 打家劫舍

题目:
输入:[2,7,9,3,1]
输出:12
偷窃到的最高金额 = 2 + 9 + 1 = 12 。

思路:
  • 只有两种情况,递推公式就好说了,dp[i]永远都是题意,就是当前偷到的最大金额
func rob(nums []int) int {// dp,一刷dp := make([]int, len(nums)+1)dp[1] = nums[0]for i:=2; i<=len(nums); i++ {dp[i] = max(dp[i-1], dp[i-2]+nums[i-1])}return dp[len(nums)]
}
func max(a, b int) int {if a>b {return a}; return b}

2、213. 打家劫舍 II

题目:
输入:nums = [2,3,2]
输出:3
解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。

思路:
  • 害,这次是围了个圈圈,就是说明了写两种情况,避免即选择了第一个又选择了最后一个
func rob(nums []int) int {if len(nums) <= 1 {return djjs2(nums)}res1 := djjs2(nums[:len(nums)-1])res2 := djjs2(nums[1:])return max(res1, res2)
}
func djjs2(nums []int) int {switch len(nums) {case 0: return 0case 1: return nums[0]}dp := make([]int, len(nums)+1)dp[1] = nums[0]for i:=2; i<=len(nums); i++ {dp[i] = max(dp[i-1], dp[i-2]+nums[i-1])}return dp[len(nums)]
}
func max(a,b int) int {if a>b {return a}; return b}

3、337. 打家劫舍 III

题目:

在这里插入图片描述

思路:
  • 看注释
/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func rob(root *TreeNode) int {// dp 这个确实有一行不好想,需要画图res := robTree(root)return max(res[0], res[1]) 
}
func max(a, b int) int {if a>b {return a}; return b}
func robTree(node *TreeNode) []int {if node == nil {return []int{0,0}}left := robTree(node.Left)right := robTree(node.Right)// 0不偷,1偷robNode := node.Val + left[0] + right[0] // 当前偷,就要加左右孩子的不偷notRobNode := max(left[0], left[1])+max(right[0], right[1]) // 当前不偷,前一个可以偷也可以不偷,+最大的return []int{notRobNode, robNode}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/267434.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

市场全局复盘 20231208

一、板块成交额排名&#xff1a; 资金流入前三个板块K 线&#xff1a; 行业成交额排名&#xff1a; 个股资金流入排名&#xff1a; select 成交额排名 ,近日指标提示 ,短线主题 ,涨停分析,CODE,名称,DDE大单净量,现价,量比,连板天,周涨停,月涨停,年涨停天,连涨天,…

win11 无法登录微软账户 终极解决方案

背景&#xff1a;win11突然无法登录微软账户&#xff0c;office无法激活&#xff0c;Edge里的微软账户也无法登录&#xff0c;反馈中心也无法打开等&#xff0c;有网络&#xff0c;浏览器可以访问微软并进行登录。 试过网上的网络配置&#xff08;SSL及TLS协议勾选&#xff09…

RabbitMQ-hello

0. pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0…

数据在内存中的存储(浮点型篇)

1.例子&#xff1a;5.5&#xff1a;内存存储为101.1&#xff0c;十分位百分位依次为2的-1次方&#xff0c;2的-2次方&#xff0c;而使用科学计数法可以改写为1.011*2的2次方 2.国际标准公式&#xff1a;-1的D次方*M*2的E次方&#xff0c;x1负0正 3.M在存储时默认整数部分为1&…

恢复出厂设置后在 Android 上恢复照片的 6 种常用方法

恢复出厂设置可帮助您删除电子设备的所有信息并将其恢复到原始系统状态。但是&#xff0c;如果您不小心按下了恢复出厂设置按钮并从 Android 设备中删除了所有难忘的照片&#xff0c;该怎么办&#xff1f;好吧&#xff0c;您无需担心&#xff0c;因为可以通过以下一些方法来恢复…

助力工业生产质检,基于轻量级yolov5-seg开发构建工业场景下滚珠丝杠传动表面缺陷分割检测系统

AI赋能工业生产是一个强有力的方式&#xff0c;在我们之前的系列博文中也有很多相应的开发实践&#xff0c;感兴趣的胡都可以自行移步阅读&#xff0c;本文的核心思想就是想要基于轻量级的实例分割模型来开发构建工业场景下的滚珠丝杠传动表面缺陷分割检测系统&#xff0c;首先…

RT-DETR算法优化改进:轻量化自研设计双卷积重新设计backbone和neck,完成涨点且计算量和参数量显著下降

💡💡💡本文自研创新改进:双卷积由组卷积和异构卷积组成,执行 33 和 11 卷积运算代替其他卷积核仅执行 11 卷积,YOLOv8 Conv,从而轻量化RT-DETR,性能如下表,GFLOPs 8.1降低至7.6,参数量6.3MB降低至5.8MB RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_637742…

迷你型洗衣机好用吗?口碑好的四款小型洗衣机推荐

随着人们的生活水平的提升&#xff0c;越来越多小伙伴来开始追求更高的生活水平&#xff0c;一些智能化的小家电就被发明出来&#xff0c;而且内衣洗衣机是其中一个。现在通过内衣裤感染到细菌真的是越来越多&#xff0c;所以我们对内衣裤的清洗频次会高于普通衣服&#xff0c;…

搞定课件录制,新手必备指南!

“有人知道课件怎么录制吗&#xff1f;学校要求我们师范专业的学生出去实习&#xff0c;现在需要录制一个课件视频&#xff0c;以便在课堂上播放&#xff0c;可是我不会录制教学视频&#xff0c;真的很头疼&#xff0c;有人能帮帮我吗。” 随着在线教育的崛起&#xff0c;课件…

治疗复发或难治性多发性骨髓瘤:2期MagnetisM-3试验结果

今天给同学们分享一篇实验文章“Elranatamab in relapsed or refractory multiple myeloma: phase 2 MagnetisMM-3 trial results”&#xff0c;这篇文章发表在Nat Med期刊上&#xff0c;影响因子为82.9。 结果解读&#xff1a; 试验设计和患者 MagnetisMM-3是一项正在进行的…

Axure电商产品移动端交互原型,移动端高保真Axure原型图(RP源文件手机app界面UI设计模板)

本作品是一套 Axure8 高保真移动端电商APP产品原型模板&#xff0c;包含了用户中心、会员成长、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 本模板由一百三十多个界面上千个交互元件及事件组…

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含python、JS工程源码)+数据集+模型(五)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 上传结果5. 小程序开发1&#xff09;查询图片2&#xff09;查询识别结…