力扣 322. 零錢兌換

題目來源:https://leetcode.cn/problems/coin-change/description/

?C++題解(來源代碼隨想錄):題目中說每種硬幣的數量是無限的,可以看出是典型的完全背包問題。動規五部曲分析如下:

  1. 確定dp數組以及下標的含義。dp[j]:湊足總額為j所需錢幣的最少個數為dp[j]
  2. 確定遞推公式。湊足總額為j - coins[i]的最少個數為dp[j - coins[i]],那么只需要加上一個錢幣coins[i]即dp[j - coins[i]] + 1就是dp[j]。遞推公式:dp[j] = min(dp[j - coins[i]] + 1, dp[j]);
  3. dp數組如何初始化。首先湊足總金額為0所需錢幣的個數一定是0,那么dp[0] = 0; 其他下標對應的數值呢?考慮到遞推公式的特性,dp[j]必須初始化為一個最大的數,否則就會在min(dp[j - coins[i]] + 1, dp[j])比較的過程中被初始值覆蓋。所以下標非0的元素都是應該是最大值。
  4. 確定遍歷順序。本題求錢幣最小個數,那么錢幣有順序和沒有順序都可以,都不影響錢幣的最小個數
  5. 舉例推導dp數組
class Solution {
public:int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount + 1, INT_MAX);dp[0] = 0;for (int i = 0; i < coins.size(); i++) { // 遍歷物品for (int j = coins[i]; j <= amount; j++) { // 遍歷背包if (dp[j - coins[i]] != INT_MAX) { // 如果dp[j - coins[i]]是初始值則跳過,不跳過+1會超出int范圍。dp[j] = min(dp[j - coins[i]] + 1, dp[j]);}}}if (dp[amount] == INT_MAX) return -1;return dp[amount];}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41753.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41753.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41753.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入理解設計模式-創建型之建造者模式(與工廠區別)

什么是建造者設計模式&#xff1f;和工廠設計模式有什么區別 建造者設計模式&#xff08;Builder Design Pattern&#xff09;和工廠設計模式&#xff08;Factory Design Pattern&#xff09;都是面向對象設計中的創建型模式&#xff0c;但它們解決的問題和應用場景有所不同。…

原碼、反碼、補碼,進制轉換,有符號數和無符號數轉換

計算機底層存儲數據時&#xff0c;存儲的是數據對應的二進制數字。對于整型數據&#xff0c;其二進制表示形式有三種&#xff0c;分別是&#xff1a;原碼、反碼、補碼&#xff0c;而實際存儲的是整型數據的補碼。 原碼、反碼以及補碼都是有符號的&#xff0c;其中最高位存放符…

帶你掌握Stable Diffution商業級玩法

課程介紹 學習地址 《Stable Diffusion商業級玩法》通過詳細講解AI繪畫技巧、實操演示和個性化指導&#xff0c;幫助您從零基礎成為繪畫高手&#xff0c;幫助您有效推廣產品或服務&#xff0c;提升市場份額。教您掌握穩定擴散繪畫技巧&#xff0c;開啟藝術創作新篇章。

Opencv 之ORB特征提取與匹配API簡介及使用例程

Opencv 之ORB特征提取與匹配API簡介及使用例程 ORB因其速度較快常被用于視覺SLAM中的位姿估計、視覺里程、圖像處理中的特征提取與匹配及圖像拼接等領域本文將詳細給出使用例程及實現效果展示 1. API 簡介 創建 static Ptr<ORB> cv::ORB::create (int nfeatures 500…

無涯教程-Perl - use函數

描述 此函數將MODULE導出的所有功能(或僅LIST引用的功能)導入當前包的名稱空間。有效等效于- BEGIN { require "Module.pm"; Module->import(); }也用于在當前腳本上強加編譯器指令(編譯指示),盡管從本質上講它們只是模塊。 請注意,use語句在編譯時進行判斷。在…

springcloud3 hystrix實現服務熔斷的案例配置3

一 hystrix的熔斷原理 1.1 hystrix的熔斷原理 在springcloud的框架里&#xff0c;熔斷機制是通過hystrix實現&#xff0c;hystrix會監控服務之間的調用。當失敗調用達到一定的閾值&#xff0c;默認是5s內失敗20次&#xff0c;就會啟用hystrix的熔斷機制&#xff0c;使用命Hy…

神經網絡基礎-神經網絡補充概念-44-minibatch梯度下降法

概念 小批量梯度下降法&#xff08;Mini-Batch Gradient Descent&#xff09;是梯度下降法的一種變體&#xff0c;它結合了批量梯度下降&#xff08;Batch Gradient Descent&#xff09;和隨機梯度下降&#xff08;Stochastic Gradient Descent&#xff09;的優點。在小批量梯…

Apache Doris大規模數據使用指南

目錄 發展歷史 架構介紹 彈性MPP架構-極簡架構 邏輯架構 基本訪問架構 分區 創建單分區表

【C++ 記憶站】缺省參數

文章目錄 缺省參數的概念缺省參數的分類1、全缺省參數2、半缺省參數 缺省參數實際應用場景 缺省參數的概念 缺省參數是聲明或定義函數時為函數的參數指定一個缺省值。在調用該函數時&#xff0c;如果沒有指定實參則采用該形參的缺省值&#xff0c;否則使用指定的實參 正常調用一…

音頻解碼及如何在Java實現

本人并不干這個&#xff0c;但是被迫下水了解了一下這個&#xff0c;稍微做了一下整理。再就是感覺現在網上以及ChatGPT在這方面給出的答案太水了&#xff0c;在此開辟一篇。無意放出代碼&#xff0c;這里只介紹一些可能重要的點。 本來以為有了ChatGPT寫這些就沒有必要了&…

Docker部署ES服務,canal全量同步的時候內存爆炸,ES/Canal Adapter自動關閉,CPU100%

文章目錄 問題解決方案1. 對ES的限制2. 對Canal-Adapter的限制 問題 使用canal-adapter全量同步&#xff08;參考Canal Adapter1.1.5版本API操作服務&#xff0c;手動同步數據&#xff08;4&#xff09;&#xff09;的時候 小批量數據可以正常運行&#xff08;幾千條&#xf…

Llama 2免費托管及API提供

Llama 2 是 Meta 最新的文本生成模型&#xff0c;目前其性能優于所有開源替代方案。 推薦&#xff1a;用 NSDT編輯器 快速搭建可編程3D場景 1、強大的Llama 2 它擊敗了 Falcon-40B&#xff08;之前最好的開源基礎模型&#xff09;&#xff0c;與 GPT-3.5 相當&#xff0c;僅低…

【uni-app】 .sync修飾符與$emit(update:xxx)實現數據雙向綁定

最近在看uni-app文檔&#xff0c;看到.sync修飾符的時候&#xff0c;覺得很有必要記錄一下 其實uni-app是一個基于Vue.js和微信小程序開發框架的跨平臺開發工具 所以經常會聽到這樣的說法&#xff0c;只要你會vue&#xff0c;uni-app就不難上手 在看文檔的過程中&#xff0c;發…

.netcore grpc客戶端工廠及依賴注入使用

一、客戶端工廠概述 gRPC 與 HttpClientFactory 的集成提供了一種創建 gRPC 客戶端的集中方式。可以通過依賴包Grpc.Net.ClientFactory中的AddGrpcClient進行gRPC客戶端依賴注入AddGrpcClient函數提供了許多配置項用于處理一些其他事項&#xff1b;例如AOP、重試策略等 二、案…

miniExcel 生成excel

一、nuget dotnet add package MiniExcel --version 1.31.2 二、新建表及數據 ExampleProducts 三、這里我用了Dapper.Query方法 讀取excel public virtual async Task<IActionResult> Anonymous(){try{//using (var connection _dbContext.GetDbConnection())//{//…

linux中的ifconfig和ip addr

在linux操作系統中ifconfig和ip addr都是顯示網卡配置信息的命令&#xff0c;好多人有疑惑它們有什么區別呢 區別1&#xff1a;對于linux發行的版本不一樣 ip addr是對新發行版本的linux使用會比較多&#xff1b;而ifconfig是老版本遇到使用的會比較多。 區別2&#xff1a;顯…

神經網絡基礎-神經網絡補充概念-32-神經網絡與大腦

概念 神經網絡&#xff08;Neural Networks&#xff09;是受到生物神經系統啟發而設計的機器學習模型&#xff0c;用于處理和學習復雜的數據模式。盡管神經網絡的設計和工作原理與大腦有一些相似之處&#xff0c;但它們并不完全相同&#xff0c;以下是神經網絡和大腦之間的一些…

基于 KubeSphere 的應用容器化在智能網聯汽車領域的實踐

公司簡介 某國家級智能網聯汽車研究中心成立于 2018 年&#xff0c;是擔當產業發展咨詢與建議、共性技術研發中心、創新成果轉化的國家級創新平臺&#xff0c;旨在提高我國在智能網聯汽車及相關產業在全球價值鏈中的地位。 目前著力建設基于大數據與云計算的智能汽車云端運營…

RestTemplate

RestTemplate介紹 RestTemplate是Spring提供的用于訪問RESTful服務的客戶端&#xff0c;RestTemplate提供了多種便捷訪問遠程Http服務的方法,能夠大大提高客戶端的編寫效率。RestTemplate默認依賴JDK提供http連接的能力&#xff08;HttpURLConnection&#xff09;&#xff0c;…

js拼接字符串

在js中&#xff0c;你可以使用字符串拼接的方式創建新的字符串。 下面是一些常用的方法&#xff1a; 1、使用運算符&#xff1a; var str1 "Hello"; var str2 "World"; var result str1 " " str2; console.log(result); // 輸出&#xf…