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

LeetCode 解题思路 42(Hot 100)

在这里插入图片描述

解题思路:

  1. dp 数组的含义: 考虑下标 i,能偷的最大金额 dp[i]。
  2. 递推公式: dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i])。
  3. dp 数组初始化: dp[0] = nums[0],dp[1] = Math.max(nums[0], nums[1])。
  4. 遍历顺序: 从 i = 2 开始,直到 i = nums.length - 1。
  5. 打印 dp 数组

Java代码:

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];}
}

复杂度分析:

  • 时间复杂度: O(n),其中 n 是房屋数量。只需遍历一次数组。
  • 空间复杂度: O(1),仅使用常数级别的额外空间。
    在这里插入图片描述

解题思路:

  1. dp 数组的含义: 装满容量为 i 的背包,最少的物品个数为 dp[i]
  2. 递推公式: dp[i] = Math.min(dp[i], dp[i - coin] + 1)。
  3. dp 数组初始化: dp[0] = 0,dp[i] = amount + 1。
  4. 遍历顺序: 与排列组合无关,从 i = 1 开始,直到 i = amount。
  5. 打印 dp 数组

Java代码:

class Solution {public int coinChange(int[] coins, int amount) {int[] dp = new int[amount + 1];Arrays.fill(dp, amount + 1);dp[0] = 0;for (int i = 1; i <= amount; i++) {for (int coin : coins) {if (i >= coin) {dp[i] = Math.min(dp[i], dp[i - coin] + 1);}}}return dp[amount] > amount ? -1 : dp[amount];}
}

复杂度分析:

  • 时间复杂度: O(amount × coins.length),遍历所有金额和硬币组合。
  • 空间复杂度: O(amount),仅需一维数组存储状态。
http://www.xdnf.cn/news/468.html

相关文章:

  • DDPM(diffusion)原理
  • 健康养生:拥抱美好生活的基石
  • LangChain框架-检索器详解
  • Map和Set相关练习
  • c++_csp-j算法 (2)
  • Vue中的template配置项
  • Kafka下载和使用(Windows版)
  • docker 大模型
  • 【数学】勾股定理
  • 速查手册:TA-Lib 超过150种量化技术指标计算全解 - 2. Momentum Indicators(动量指标)
  • 编译报错 宏 _IOC_SIZEBITS,而这个宏在编译时未定义
  • 2025年赣教云智慧作业微课PPT模板
  • 网络互连与互联网4
  • [Java实战经验]异常处理最佳实践
  • 【langchain4j】Springboot如何接入大模型以及实战开发-AI问答助手(一)
  • 深入剖析JavaScript内存泄漏:识别、定位与实战解决
  • BZOJ P1419 Red is good
  • 软件测试--自动化测试1
  • 如何使用flatten函数在Terraform 中迭代嵌套map
  • 【HDFS入门】HDFS性能调优实战:压缩与编码技术深度解析
  • 若依(笔记)
  • C++入门小馆: 深入string类
  • Redis启动报错(error) NOAUTH Authentication required
  • NodeRED模拟复杂流程处理
  • MACOS 上的 快捷指令怎么用,有哪些分享资源可以用
  • WSL (ext4.vhdx文件)占用空间过大,清理方式记录,同时更改 WSL 保存位置
  • 电脑 访问 github提示 找不到网页,处理方案
  • CRC实战宝典:从原理到代码,全面攻克循环冗余校验
  • 驱动-自旋锁死锁
  • Linux系统之部署TestNet资产管理系统