1.25 - 零钱兑换 && 理解右值以及move的作用

目录

1.零钱兑换

a.核心思想

b.思路

c.步骤

2.理解右值以及move的作用

右值(rvalue)

[move 的作用](#move 的作用)


1.零钱兑换

322. 零钱兑换 - 力扣(LeetCode)https://leetcode.cn/problems/coin-change/

cpp 复制代码
class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        std::vector<int> dp(amount + 1, amount + 1);
        dp[0] = 0;
        for (int coin : coins) 
        {
            for (int j = coin; j <= amount; j++) 
            {
                dp[j] = std::min(dp[j], dp[j - coin] + 1);
            }
        }
        return dp[amount] > amount ? -1 : dp[amount];
    }
};

a.核心思想

这是一个典型的动态规划问题,类似于零钱兑换中的最少硬币数问题。我们可以使用动态规划的方法来解决,通过定义一个数组来记录凑成不同金额所需的最少硬币数,然后根据给定的硬币面额数组逐步更新这个数组。

b.思路

① 定义一个长度为 amount + 1 的数组 dp,其中 dp[i] 表示凑成金额 i 所需的最少硬币数。初始时,将 dp 数组的所有元素初始化为一个较大的值(例如 amount + 1),表示初始时无法凑成该金额,而 dp[0] = 0,因为凑成金额 0 不需要任何硬币。

② 遍历硬币面额数组 coins,对于每个硬币面额 coin,再从 coin 开始遍历到 amount,更新 dp[j] 的值,即 dp[j] = min(dp[j], dp[j - coin] + 1)。

③ 最后,如果 dp[amount] 的值仍然是最初设置的较大值,说明无法凑成总金额 amount,返回 -1;否则返回 dp[amount]。

c.步骤

① 初始化 dp 数组。

② 遍历硬币面额数组,更新 dp 数组。

③ 根据 dp[amount] 的值返回结果。

2.理解右值以及move的作用

右值(rvalue)

① 定义:不能取地址的临时值,如字面值、表达式结果、函数返回的临时对象等。

② 特点:生命周期短暂,通常只存在于当前表达式中,无法被修改(除非是右值引用绑定)。

move 的作用

① 核心功能:将左值强制转换为右值引用(T&&),触发移动语义(而非拷贝语义)。

② 意义:

  • 避免不必要的深拷贝(如容器、字符串、智能指针等资源持有类)。

  • 通过"窃取"资源(如内存指针、文件句柄)实现高效转移,提升性能。

  • 配合移动构造函数/移动赋值运算符,实现资源所有权的快速转移。

希望这些内容对大家有所帮助!

感谢大家的三连支持!

相关推荐
漂流瓶jz7 小时前
UVA-11491 奖品的价值 题解答案代码 算法竞赛入门经典第二版
c++·算法·图论·题解·aoapc·算法竞赛入门经典·uva
weixin_3077791311 小时前
C++代码实现MATLAB中的dlarray函数功能
开发语言·c++·算法·matlab
Frank_refuel14 小时前
C++11之一场名为“搬家”的 C++ 之旅
开发语言·c++
hetao173383716 小时前
2026-10-03~04 hetao1733837 的刷题记录
c++·算法
Zootopia62617 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
longlongzihan17 小时前
从LeetCode 70. 爬楼梯看动态规划:如何精准推导状态转移方程?
c++·算法·leetcode·动态规划
2601_9603563818 小时前
2027校招采购岗解析:数学基础如何迁移到需求预测、成本与供应商分析
人工智能·算法
h_a_o777oah18 小时前
【树论】树链剖分:将树形结构转化为线性结构以处理树上路径问题(洛谷 P3384 附C++代码模板)
数据结构·算法·线段树·acm·树链剖分·树论·重链剖分
HEJOO918 小时前
指针的算术运算详解
java·数据结构·算法
Coder-magician18 小时前
《代码随想录》刷题打卡day47:并查集-part01
数据结构·算法·图论