news 2026/6/10 21:35:46

力扣 打家劫舍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣 打家劫舍

题目:

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。

一、题目理解

给定一个数组nums,其中:

  • nums[i]表示第i间房子的金额

  • 相邻的房子不能同时抢

目标是:
在不触发警报的前提下,抢到最多的钱


二、为什么这是动态规划问题?

这是一个**典型的「选择 + 约束」问题:

  • 每一间房子只有两种选择:

    • 不抢

  • 选择当前房子,会影响后续选择(相邻不能抢)

这种「当前决策依赖之前结果」的结构,非常适合用动态规划(DP)


三、状态定义(关键)

定义:

dp[i] = 抢到第 i 间房子为止,能够获得的最大金额

注意:

  • dp[i] 不是「是否抢第 i 家」

  • 而是:在前 i 家房子中,能拿到的最大值


四、状态转移方程(核心)

考虑第i间房子,有两种情况:

情况 1:不抢第 i 间房

那么最大金额等于:dp[i-1]

情况 2:抢第 i 间房

  • 那第i-1间房一定不能抢

  • 上一个合法状态只能来自i-2

  • 那么最大金额等于:dp[i-2] + nums[i]

    class Solution { public: int rob(vector<int>& nums) { int n = nums.size(); if (n == 1) return nums[0]; vector<int> dp(n); dp[0] = nums[0]; dp[1] = max(nums[0], nums[1]); for (int i = 2; i < n; i++) { dp[i] = max(dp[i-1], dp[i-2] + nums[i]); } return dp[n-1]; } };

综合两种情况

dp[i] = max( dp[i-1], dp[i-2] + nums[i] )

这一步是整道题的灵魂


五、初始条件

dp[0] = nums[0] dp[1] = max(nums[0], nums[1])

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 18:16:27

使用NeMo框架微调Llama 3.1 8B Instruct推理模型

数据准备、训练、评估三大核心阶段 一、整体流程重构&#xff08;保留核心逻辑&#xff09; 整个流程的核心目标是&#xff1a;基于Llama Nemotron后训练数据集&#xff0c;通过NeMo Curator筛选高质量推理类数据&#xff0c;用LoRA轻量化微调Llama 3.1 8B Instruct模型&…

作者头像 李华
网站建设 2026/6/10 15:56:24

NVIDIA NeMo训练一个具备推理能力的LLM

NVIDIA NeMo训练一个具备推理能力的LLM 这是一个非常详细的指南&#xff0c;展示了如何使用NVIDIA NeMo生态系统在周末训练具备推理能力的LLM。让我为您梳理和总结关键信息&#xff1a; 核心概述 目标&#xff1a;在单个GPU上&#xff0c;48小时内训练一个具备可控推理能力的小…

作者头像 李华
网站建设 2026/6/10 14:17:08

AI使用总结

概述 目前主要在AI-coding和垂直领域Agent上有一些实践经验。AI-coding 代码生成0-1的项目骨架搭建以及文档生成 通过提示词工程&#xff0c;定义编码风格以及原则、技术栈以及依赖组件的版本信息、代码工程的结构、各模块的解释说明、以及基于few-shot的代码示例&#xff0c;能…

作者头像 李华