代碼隨想錄算法訓練營第34天 | 62.不同路徑 63. 不同路徑 II 整數拆分 不同的二叉搜索樹 (跳過)

62.不同路徑

62. 不同路徑 - 力扣(LeetCode)

本題大家掌握動態規劃的方法就可以。 數論方法 有點非主流,很難想到。

代碼隨想錄

視頻講解:動態規劃中如何初始化很重要!| LeetCode:62.不同路徑_嗶哩嗶哩_bilibili

dp數組含義:從m*n格子左上角到右上角有幾種走法

遞推公式:dp[i][j] = dp[i - 1][j] + dp[i][j - 1];

初始化:dp[i][1] = 1? dp[1][i] = 1?

遍歷順序:從左往右

class Solution {public int uniquePaths(int m, int n) {int[][] dp = new int[m + 1][n + 1];for(int i = 1;i < m + 1;i++){dp[i][1] = 1;}for(int i = 1;i < n + 1;i++){dp[1][i] = 1;}for(int i = 2;i < m + 1;i++){for(int j = 2;j < n + 1;j++){dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m][n];}
}

63. 不同路徑 II

63. 不同路徑 II - 力扣(LeetCode)

https://programmercarl.com/0063.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84II.htmlhttps://programmercarl.com/0063.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84II.html

視頻講解:動態規劃,這次遇到障礙了| LeetCode:63. 不同路徑 II_嗶哩嗶哩_bilibili

dp數組含義:從當前位置到目標位置有幾種走法

遞歸公式:dp[i][j] = dp[i + 1][j] + dp[i][j + 1];

初始化:n - 1列?m - 1行,從左向右從上到下找到最后一個出現的障礙,障礙和之前的dp都是0

其他位置如果有障礙,dp也是0

遍歷順序:從右向左,從下到上

class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[][] dp = new int[m][n];int mem = -1;//初始化n - 1列for(int i = 0;i < m;i++){if(obstacleGrid[i][n - 1] == 1){mem = i;dp[i][n - 1] = 0;}else{dp[i][n - 1] = 1;}}if(mem != -1){for(int i = 0;i < mem;i++){dp[i][n - 1] = 0;}}mem = -1;//初始化m - 1行for(int i = 0;i < n;i++){if(obstacleGrid[m - 1][i] == 1){mem = i;dp[m - 1][i] = 0;}else{dp[m - 1][i] = 1;}}if(mem != -1){for(int i = 0;i < mem;i++){dp[m - 1][i] = 0;}}for(int i = m - 2;i >= 0;i--){for(int j = n - 2;j >= 0;j--){//碰到障礙就是0種走法if(obstacleGrid[i][j] == 1)dp[i][j] = 0;//從右向左遍歷else dp[i][j] = dp[i + 1][j] + dp[i][j + 1];}}return dp[0][0];}
}

隨想錄的,dp的含義是從00到該目標位置有幾種走法,從左向右遍歷

初始化第一行第一列,沒有障礙物賦1,只要遇到一個障礙物就賦0,后面都是0

class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[][] dp = new int[m][n];//如果在起點或終點出現了障礙,直接返回0if (obstacleGrid[m - 1][n - 1] == 1 || obstacleGrid[0][0] == 1) {return 0;}for (int i = 0; i < m && obstacleGrid[i][0] == 0; i++) {dp[i][0] = 1;}for (int j = 0; j < n && obstacleGrid[0][j] == 0; j++) {dp[0][j] = 1;}for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j] = (obstacleGrid[i][j] == 0) ? dp[i - 1][j] + dp[i][j - 1] : 0;}}return dp[m - 1][n - 1];}
}
  1. 整數拆分?

343. 整數拆分 - 力扣(LeetCode)

代碼隨想錄

視頻講解:動態規劃,本題關鍵在于理解遞推公式!| LeetCode:343. 整數拆分_嗶哩嗶哩_bilibili

class Solution {public int integerBreak(int n) {if(n == 2)return 1;int[] dp = new int[n + 1];dp[2] = 1;dp[3] = 2;int temp = 0;for(int i = 3;i < n + 1;i++){for(int j = 1;j <= i/2;j++){dp[i] = Math.max(j * dp[i - j],j*(i - j));dp[i] = Math.max(dp[i],temp);temp = dp[i];}}return dp[n];}
}
  1. 不同的二叉搜索樹 (跳過)

本題思路并不容易想,一刷建議可以跳過。 如果學有余力,可以看視頻理解一波。

代碼隨想錄

視頻講解:動態規劃找到子狀態之間的關系很重要!| LeetCode:96.不同的二叉搜索樹_嗶哩嗶哩_bilibili

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

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

相關文章

uniapp APP權限彈框

效果圖 第一步 新建一個頁面&#xff0c;設置透明 {"path": "pages/permissionDisc/permissionDisc","style": {"navigationBarTitleText": "","navigationStyle": "custom","app-plus": {&…

網絡安全證書培訓機構有哪些

一、前言少敘 記得剛入行的時候&#xff0c;想考一個證書來裝裝門面&#xff0c;結果發現費用太高了&#xff0c;比當時一個月的工資都高&#xff0c;感嘆網絡安全這幫人真舍得花錢&#xff0c;遂放棄。后來入職網絡安全公司&#xff0c;考了一個CISP&#xff0c;在工作中逐漸…

torch.argsorttorch.gather

文章目錄 1. 舉例說明2. pytorch 代碼 1. 舉例說明 torch.argsort 的作用是可以將矩陣中的元素進行從小到大排序&#xff0c;得到對應的序號。假設我們有一個向量a表示如下 a [ 8 , 7 , 6 , 9 , 7 ] \begin{equation} a[8,7,6,9,7] \end{equation} a[8,7,6,9,7]?? 那么從小…

JSON數據格式介紹

2.5 JSON 2.5.1.JSON格式的用途 在開發中凡是涉及到『跨平臺數據傳輸』&#xff0c;JSON格式一定是首選 2.5.2.JSON格式的說明 1.JSON數據兩端要么是{}&#xff0c;要么是[] {}定義JSON對象[]定義JSON數組 2.JSON對象的格式是&#xff1a;json {key:value,key:value,...,ke…

(性能測試)性能測試工具 2.jmeter的環境搭建 3jmeter元件和4使用實例 5jmeter元件和參數化

目錄 性能測試工具 性能測試工具 jemeter環境搭建 jmeter的常用目錄介紹 jmeter修改語言和主題--jmeter界面的漢化 jmeter元件 jmeter元件和組件的介紹 jmeter的作用域原則 jmeter的執行順序 案例&#xff1a;執行順序 jmeter使用案例 jmeter線程組的介紹 jmeter…

Qt程序基于共享內存讀寫CodeSys的變量

文章目錄 1.背景2.結構體從CodeSys導出后導入到C2.1.將結構體從CodeSys中導出2.2.將結構體從m4文件提取翻譯成c格式 3.添加RTTR注冊信息4.讀取PLC變量值5.更改PLC變量值6.Qt讀寫CodeSys的共享內存 1.背景 在文章【基于RTTR在C中實現結構體數據的多層級動態讀寫】中&#xff0c…

大模型架構全景解析:從Transformer到未來計算范式

1. Transformer 架構 核心模型 GPT-4、BERT、T5、LLaMA、通義千問、文心ERNIE 關鍵技術 多頭注意力&#xff1a;GPT-4 使用 96 頭注意力位置編碼創新&#xff1a;LLaMA 采用 RoPE&#xff08;旋轉位置編碼&#xff09;&#xff0c;Claude 3 引入 ALiBi歸一化優化&#xff1…

AI第一天 自我理解筆記--微調大模型

目錄 1. 確定目標&#xff1a;明確任務和數據 2. 選擇預訓練模型 3. 數據預處理 (1) 數據清洗與格式化 (2) 劃分數據集 (3) 數據加載與批處理 4. 構建微調模型架構 (1) 加載預訓練模型 (2) 修改模型尾部&#xff08;適配任務&#xff09; (3) 凍結部分層&#xff08;可…

計算機視覺——深入理解卷積神經網絡與使用卷積神經網絡創建圖像分類算法

引言 卷積神經網絡&#xff08;Convolutional Neural Networks&#xff0c;簡稱 CNNs&#xff09;是一種深度學習架構&#xff0c;專門用于處理具有網格結構的數據&#xff0c;如圖像、視頻等。它們在計算機視覺領域取得了巨大成功&#xff0c;成為圖像分類、目標檢測、圖像分…

[C++面試] 關于deque

一、入門 1、deque與vector的區別 deque的迭代器包含以下信息&#xff1a; 當前緩沖區指針&#xff08;current_buffer&#xff09;當前元素在緩沖區內的位置&#xff08;current&#xff09;中控器的位置&#xff08;map&#xff09; 每次移動迭代器時&#xff0c;需檢查是…

服務性能防腐體系:基于自動化壓測的熔斷機制

01# 背景 在系統架構的演進過程中&#xff0c;項目初始階段都會通過壓力測試構建安全護城河&#xff0c;此時的服務性能與資源水位保持著黃金比例關系。然而在業務高速發展時期&#xff0c;每個沖刺周期都被切割成以業務需求為單位的開發單元&#xff0c;壓力測試逐漸從必選項…

SpringBoot 和vue前后端配合開發網頁拼圖10關游戲源碼技術分享

今天分享一個 前后端結合 的網頁游戲 開發項目源碼技術。 這也是我第一次寫游戲類的程序&#xff0c;雖然不是特別復雜的游戲&#xff0c;但是是第一次寫&#xff0c;肯定要記錄一下了&#xff0c;哈哈。 游戲的內容 就是 我們顯示中玩的那個 拼圖碎片的 游戲&#xff0c;類似下…

【k8s002】k8s健康檢查與故障診斷

k8s健康檢查與故障診斷 ?一、集群狀態檢查? ?檢查節點健康狀態? kubectl get nodes -o wide # 查看節點狀態及基本信息 kubectl describe node <node-name> # 分析節點詳細事件&#xff08;如資源不足、網絡異常&#xff09; kubectl top nodes …

01-Canvas-使用fabric初始

fabric官網&#xff1a; https://fabric5.fabricjs.com/demos/ 創建畫布并繪制 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

【機器學習-基礎知識】統計和貝葉斯推斷

1. 概率論基本概念回顧 1. 概率分布 定義: 概率分布(Probability Distribution)指的是隨機變量所有可能取值及其對應概率的集合。它描述了一個隨機變量可能取的所有值以及每個值被取到的概率。 對于離散型隨機變量,使用概率質量函數來描述。對于連續型隨機變量,使用概率…

常見限流算法及實現

1. 固定窗口計數器&#xff08;Fixed Window Counter&#xff09; 原理&#xff1a;在固定時間窗口&#xff08;如1分鐘&#xff09;內統計請求數&#xff0c;超過閾值則拒絕后續請求。優點&#xff1a;實現簡單&#xff0c;內存占用低。缺點&#xff1a;存在窗口切換時的流量…

《TCP/IP網絡編程》學習筆記 | Chapter 18:多線程服務器端的實現

《TCP/IP網絡編程》學習筆記 | Chapter 18&#xff1a;多線程服務器端的實現 《TCP/IP網絡編程》學習筆記 | Chapter 18&#xff1a;多線程服務器端的實現線程的概念引入線程的背景線程與進程的區別 線程創建與運行pthread_createpthread_join可在臨界區內調用的函數工作&#…

創新實踐分享:基于邊緣智能+扣子的智能取物機器人解決方案

在 2024 年全國大學生物聯網設計競賽中&#xff0c;火山引擎作為支持企業&#xff0c;不僅參與了賽道的命題設計&#xff0c;還為參賽隊伍提供了相關的硬件和軟件支持。以邊緣智能和扣子的聯合應用為核心&#xff0c;參賽者們在這場競賽中展現出了卓越的創新性和實用性&#xf…

QT:動態屬性和對象樹

動態對象 1.添加Q_PROPERTY對象 #ifndef MYPROPERTYCLASS_H #define MYPROPERTYCLASS_H#include <QObject>class MyPropertyClass : public QObject {Q_OBJECTQ_PROPERTY(QString mask READ mask WRITE setMask NOTIFY maskChanged) public:explicit MyPropertyClass(Q…

MobileNet家族:從v1到v4的架構演進與發展歷程

MobileNet 是一個專為移動設備和嵌入式系統設計的輕量化卷積神經網絡&#xff08;CNN&#xff09;家族&#xff0c;旨在在資源受限的環境中實現高效的圖像分類、對象檢測和語義分割等任務。自 2017 年首次推出以來&#xff0c;MobileNet 經歷了從 v1 到 v4 的多次迭代&#xff…