代碼隨想錄算法訓練營第四五天 | dp[j] = min(dp[j], dp[j - coins[i]] + 1)

目錄

  • 爬樓梯 (進階)
  • 零錢兌換
  • 完全平方數
  • 總結

LeetCode 70. 爬樓梯 (進階)
LeetCode 322. 零錢兌換
LeetCode 279.完全平方數

爬樓梯 (進階)

  • 好做
import java.util.*;public class Main{// dp[i] 爬到有i個臺階的樓頂 有 dp[i]種方法// dp[i] += dp[i - j];// dp[0] = 1// dp[0]是遞歸中一切數值的基礎所在,如果dp[0]是0的話,其他數值都是0了。// public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[] dp = new int[n + 1];dp[0] = 1;for (int j = 0; j <= n; j++ ) {for (int i = 1; i <= m; i++) {if (j >= i) dp[j] += dp[j - i];}}System.out.println(dp[n]);}
}

零錢兌換

給你一個整數數組 coins ,表示不同面額的硬幣;以及一個整數 amount ,表示總金額。

計算并返回可以湊成總金額所需的 最少的硬幣個數 。如果沒有任何一種硬幣組合能組成總金額,返回 -1 。

你可以認為每種硬幣的數量是無限的。


  • dp[j]:湊足總額為j所需錢幣的最少個數為dp[j]
  • 湊足總額為j - coins[i]的最少個數為dp[j - coins[i]],那么只需要加上一個錢幣coins[i]即dp[j - coins[i]] + 1就是dp[j](考慮coins[i])
  • 遞推公式:dp[j] = min(dp[j - coins[i]] + 1, dp[j]);
class Solution {// dp[j]:湊足總額為j所需錢幣的最少個數為dp[j]//       0  1  2  3  4  5  6  7  8  9  10  11// 0  1  0  1  2  3  4  5  6  7  8  9  10  11// 1  2  0  1  1  2  2  3  3  4  4  5  5   6// 2  5  0public int coinChange(int[] coins, int amount) {int[] dp = new int[amount + 1];int max = Integer.MAX_VALUE;for (int j = 0; j < dp.length; j++) {dp[j] = max;}dp[0] = 0;for (int i = 0; i < coins.length; i++) {for (int j = coins[i]; j <= amount; j++) {//只有dp[j-coins[i]]不是初始最大值時,該位才有選擇的必要if (dp[j - coins[i]] != max) {dp[j] = Math.min(dp[j], dp[j - coins[i]] + 1);}}}return dp[amount] == max ? -1 : dp[amount];}
}

完全平方數

給你一個整數 n ,返回 和為 n 的完全平方數的最少數量 。

完全平方數 是一個整數,其值等于另一個整數的平方;換句話說,其值等于一個整數自乘的積。例如,1、4、9 和 16 都是完全平方數,而 3 和 11 不是。

class Solution {public int numSquares(int n) {// dp[j] 為 n 的完全平方數的最少數量 。// dp[j] = Math.min(dp[j], dp[j - nums[i]^2] + 1)int[] dp = new int[n + 1];int max = Integer.MAX_VALUE;for (int j = 0; j <= n; j++) {dp[j] = max;}dp[0] = 0;  // 別忘記寫for (int i = 1; i * i <= n; i++) {for (int j = i * i; j <= n; j++) {// if (dp[j - i * i] != max) {dp[j] = Math.min(dp[j], dp[j - i * i] + 1);// }  // 不需要if 完全平方數不會由湊不成的狀況發生 }}return dp[n]; }
}

總結

還不太會寫 完全背包的 二維方法

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

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

相關文章

css背景圖片屬性

基礎代碼&#xff1a; div {width: 200px;height: 200px;background: url(./css-logo.png); }<div></div> 1、background-repeat&#xff1a;默認是repeat 設置背景圖片在容器內是否平鋪。 background-repeat: repeat-y; background-repeat: repeat-x; background…

消息中間件之RocketMQ源碼分析(二十四)

事務消息 事務消息機制。 事務消息的發送和處理總結為四個過程: 1.生產者發送事務消息和執行本地事務 2.Broker存儲事務消息 3.Broker回查事務消息 4.Broker提交或回滾事務消息 生產者發送事務消息和執行本地事務。 發送過程分為兩個階段: 第一階段,發送事務消息 第二階段,發…

Spring Expression Language (SpEL)

Spring 表達語言&#xff08;SpEL&#xff09;&#xff0c;支持在運行時查詢和操作對象圖&#xff0c;可以用于數據綁定、屬性訪問、方法調用等。使用SpEL可以簡化代碼并提高應用程序的可維護性。 1 概覽 SpelExpressionParser是SpEL的一個核心組件&#xff0c;負責解析和編譯…

CentOS安裝編譯Python3.11.6

CentOs自帶python2版本太低&#xff0c;項目需要python3&#xff0c;于是自己安裝python 操作指南&#xff1a; 重新下載源代碼&#xff1a; # 刪除舊的 Python 源代碼文件&#xff08;如果有&#xff09; rm -rf Python-3.11.6.tar.xz # 下載 Python 3.11.6 的源代碼文件 wget…

Java泛型簡介

Java泛型簡介 Java泛型是在Java 5中引入的一個特性&#xff0c;它允許程序員在編譯時指定類、接口或方法能夠接受的類型。泛型的主要目的是提供編譯時類型安全檢查&#xff0c;避免在運行時因為類型轉換錯誤而導致的ClassCastException。 在沒有泛型之前&#xff0c;Java中的集…

如何利用動態靜態代理IP實現跨地域網絡營銷與市場研究

動態代理IP和靜態代理IP都可以在跨地域網絡營銷與市場研究中發揮關鍵作用&#xff0c;具體實現方式如下&#xff1a; ### 動態代理IP的應用&#xff1a; 1. 跨地域營銷活動測試&#xff1a; - 在進行網絡營銷時&#xff0c;尤其是要驗證廣告投放、SEO效果或A/B測試不同地區用戶…

Ubuntu系統使用Docker搭建Jupyter Notebook并實現無公網ip遠程連接

文章目錄 1. 選擇與拉取鏡像2. 創建容器3. 訪問Jupyter工作臺4. 遠程訪問Jupyter工作臺4.1 內網穿透工具安裝4.2 創建遠程連接公網地址4.3 使用固定二級子域名地址遠程訪問 本文主要介紹如何在Ubuntu系統中使用Docker本地部署Jupyter Notebook&#xff0c;并結合cpolar內網穿透…

C語言系列(所需基礎:大學C語言及格)-4-轉義字符/注釋/選擇語句

文章目錄 一、轉義字符二、注釋三、選擇語句 一、轉義字符 加上\會講原來的字符改變意思&#xff0c;即進行轉義 例如\t會使t變成\t用于表示轉義字符&#xff0c;使得t轉義成水平制表符 其他轉義字符&#xff1a; 三字母詞&#xff08;展示\&#xff1f;的用處&#xff09;…

C#面:接口是一種引用類型,不可以聲明公有的域或私有的成員變量,但是可以聲明什么呢?

可以聲明&#xff1a;方法&#xff0c;屬性&#xff0c;索引器&#xff0c;事件。 接口的主要作用是定義一套規范&#xff0c;使得不同的類可以按照相同的規范進行交互。通過實現接口&#xff0c;類可以具備多態性&#xff0c;即可以以接口類型來引用對象&#xff0c;并調用接…

k8s-001-Centos7內核升級

1. 查看內核 [rootlocalhost ~]# uname -a 2. 執行的命令(安裝最新版內核): 下載: rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 安裝: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm &#xff08; 查看最新版內核&…

杭州默安-安全技術實習生-一面

1.自我介紹 略 2.專業主修的課程 略 3.xss漏洞的類型&#xff0c;原理及防御 原理&#xff0c;服務器對用戶的輸入過濾不嚴格&#xff0c;將用戶的輸入當作Javascript代碼執行并返回給客戶端。 防御&#xff0c;輸入和url參數過濾&#xff0c;HTML實體編碼轉義特殊字符。…

力扣hot100題解(python版33-35題)

33、排序鏈表 給你鏈表的頭結點 head &#xff0c;請將其按 升序 排列并返回 排序后的鏈表 。 示例 1&#xff1a; 輸入&#xff1a;head [4,2,1,3] 輸出&#xff1a;[1,2,3,4]示例 2&#xff1a; 輸入&#xff1a;head [-1,5,3,4,0] 輸出&#xff1a;[-1,0,3,4,5]示例 3&a…

kafka架構詳解

文章目錄 概述kafaka架構Kafka的設計時什么樣的Zookeeper 在 Kafka 中的作用知道 概述 Apache Kafka 是分布式發布 - 訂閱消息系統&#xff0c;在 kafka 官網上對 kafka 的定義&#xff1a;一個分布式發布 - 訂閱消息傳遞系統。 Kafka 最初由 LinkedIn 公司開發&#xff0c;Li…

mysql 中 auto_increment 自增約束的用法和配置

自增約束 int字段 特殊約束條件&#xff0c;用于為表中寫入新的記錄生成唯一的值&#xff0c;一個表中只能有一個自增約束字段 格式 字段 數據類型 auto_increment 創建帶有自增約束的表 create table student_game_auto ( id int unique auto_increment, name char(5),…

螞蟻集團推動編制的全球首個隱私計算一體機國際標準發布

近日&#xff0c;IEEE 標準協會&#xff08;IEEE-SA&#xff09;正式發布并推行了由我國企業主導的全球首個隱私計算一體機國際標準《隱私計算一體機技術要求》&#xff08;IEEE 3156-2023&#xff09;。IEEE-SA是權威國際標準制定機構&#xff0c;該標準的成功發布意味著中國的…

numpy常見操作

返回各維度元組print(img.shape)返回大小img.size返回各維度數據類型print(img.dtype) 數據類型變int8maskmask.astype(np.int8) 注意int32可變float64 但float64變int32會把小數截斷 string_可變float64 NumPy常見操作&#xff1a; import numpy as np 創建一個一維數組 ar…

繼承-學習2

this關鍵字&#xff1a;指向調用該方法的對象&#xff0c;一般我們是在當前類中使用this關鍵字&#xff0c;所以我們常說代表本類對象的引用 super關鍵字&#xff1a;代表父類存儲空間的標識(可看作父類對象的引用) 父類&#xff1a; package ven;public class Fu {//父類成員…

操作系統面經

1. 進程和線程的區別&#xff1f; 調度&#xff1a;進程是資源管理的基本單位&#xff0c;線程是程序執行的基本單位。切換&#xff1a;線程上下文切換比進程上下文切換要快得多。擁有資源&#xff1a; 進程是擁有資源的一個獨立單位&#xff0c;線程不擁有系統資源&#xff0…

unity自定義著色器基礎

這些內置渲染管線的著色器示例演示了編寫自定義著色器的基礎知識&#xff0c;并涵蓋了常見的用例。 有關編寫著色器的信息&#xff0c;請參閱編寫著色器。 設置場景 第一步是創建一些用于測試著色器的對象。在主菜單中選擇 Game Object > 3D Object > Capsule。然后&a…

高光譜遙感學習入門丨高光譜數據處理基礎、Python和Matlab高光譜遙感數據處理

目錄 ①Python高光譜遙感數據處理與高光譜遙感機器學習方法深度應用 ②Matlab高光譜遙感、數據處理與混合像元分解實踐技術應用 ③高光譜遙感數值建模技術及在植被、水體、土壤信息提取領域應用 更多應用 高光譜遙感信息對于我們認識世界具有重要意義。盡管大部分物質在人眼…