day42 62.不同路徑 63. 不同路徑 II

?62.不同路徑?

思路

機器人從(0 , 0) 位置出發,到(m - 1, n - 1)終點。

按照動規五部曲來分析:

1.確定dp數組(dp table)以及下標的含義

dp[i][j] :表示從(0 ,0)出發,到(i, j) 有dp[i][j]條不同的路徑。(并不是步數)

2.確定遞推公式

想要求dp[i][j],只能有兩個方向來推導出來,即dp[i - 1][j] 和 dp[i][j - 1]

3.dp數組的初始化

首先dp[i][0]一定都是1,因為從(0, 0)的位置到(i, 0)的路徑只有一條(只能向下向右走),那么dp[0][j]也同理

4.確定遍歷順序

遞推公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1],dp[i][j]都是從其上方和左方推導而來,那么從左到右一層一層遍歷就可以了。

5.舉例推導dp數組

代碼

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

63. 不同路徑 II

思路

注意點:同樣只能想右或者向下,遇到障礙物就沒有辦法走,在初始化的時候障礙物之后的位置無法初始化即為0。

int[][] obstacleGrid     obstacleGrid.length為行數     obstacleGrid[0].length為列數(第一行的元素的數量即為列數)

動規五部曲:

1.確定dp數組(dp table)以及下標的含義

dp[i][j] :表示從(0 ,0)出發,到(i, j) 有dp[i][j]條不同的路徑。

2.確定遞推公式

遞推公式和62.不同路徑一樣,dp[i][j] = dp[i - 1][j] + dp[i][j - 1]。有了障礙,(i, j)如果就是障礙的話應該就保持初始狀態(初始狀態為0)

3.dp數組如何初始化

因為從(0, 0)的位置到(i, 0)的路徑只有一條,所以dp[i][0]一定為1,dp[0][j]也同理。

但如果(i, 0) 這條邊有了障礙之后,障礙之后(包括障礙)都是走不到的位置了,所以障礙之后的dp[i][0]應該還是初始值0。

4.確定遍歷順序

從遞歸公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1] 中可以看出,一定是從左到右一層一層遍歷,這樣保證推導dp[i][j]的時候,dp[i - 1][j] 和 dp[i][j - 1]一定是有數值。

5.舉例推導dp數組

代碼

   class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;       //行數列數可能會為1,故而不能使用obstacleGrid[1].lengthif (obstacleGrid[0][0] == 1 || obstacleGrid[m - 1][n - 1] == 1) {return 0;}int[][] dp = new int[m][n];for (int i = 0; i < m && obstacleGrid[i][0] == 0; i++) {dp[i][0] = 1;}for (int i = 0; i < n && obstacleGrid[0][i] == 0; i++) {dp[0][i] = 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];}}

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

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

相關文章

2-Django項目進階--繼續學生管理系統

目錄 項目框架: urls.py views.py modules.py class_data.html add_and_modify.html add_stu.html 筆記: 繼承語法 模板繼承總結&#xff1a; 班級添加 add_and_modify.html 修改添加公用一個頁面即可 views.py 班級修改 views.py url.py 班級刪除 views.py…

boost asio異步服務器(2)實現偽閉包延長連接生命周期

閉包 在函數內部實現一個子函數&#xff0c;子函數的作用域內能訪問外部函數的局部變量。閉包就是能夠讀取其他函數內部變量。但是由于閉包會使得函數中的變量都被保存在內存中&#xff0c;內存消耗很大&#xff0c;所以不能濫用閉包&#xff0c;否則會造成程的性能問題&#x…

構造器--5.28

不用一個個屬性賦值的方法&#xff1a; 知道了類的創建與使用&#xff0c;但是每次賦值都是一個個調用&#xff0c;我們可以用構造器使得方法簡單一點&#xff0c;不用一個個調用屬性賦值&#xff0c;直接傳參就OK了&#xff1b; 點擊類名然后ctrl可以查看構造器 public yanxi…

C++完成特色旅游管理信息系統

背景&#xff1a; 繼C完成淄博燒烤節管理系統后&#xff0c;我們來到了特色旅游管理信息系統的代碼編寫&#xff0c;歷史鏈接點下方。 C完成淄博燒烤節管理系統_淄博燒烤總賬管理系統的-CSDN博客 問題描述&#xff1a; 為了更好的管理各個服務小組&#xff0c;開發相應的管…

民國漫畫雜志《時代漫畫》第30期.PDF

時代漫畫30.PDF: https://url03.ctfile.com/f/1779803-1248635414-87c8c8?p9586 (訪問密碼: 9586) 《時代漫畫》的雜志在1934年誕生了&#xff0c;截止1937年6月戰爭來臨被迫停刊共發行了39期。 ps: 資源來源網絡!

webpack打包配置項

webpack打包配置項 在config.js 中 module.exports {publicPath: process.env.NODE_ENV production ? / : /, //靜態資源目錄outputDir: dist, //打包名稱assetsDir: static,//靜態資源&#xff0c;目錄devServer: {port: port,open: false,overlay: {warnings: false,erro…

SpringBoot自動裝配源碼

自動裝配&#xff1a; 實際上就是如何將Bean自動化裝載到IOC容器中管理&#xff0c;Springboot 的自動裝配時通過SPI 的方式來實現的 SPI&#xff1a;SpringBoot 定義的一套接口規范&#xff0c;這套規范規定&#xff1a;Springboot 在啟動時會掃描外部引用 jar 包中的META-IN…

css 漸變色邊框

效果圖&#xff1a; 代碼&#xff1a; <style>:root{--br-radius: 12px;}.list{position: relative;}.list_tle{margin-top: 15px;margin-bottom: 5px;}.item{position: relative;display: inline-flex;} .br1 {padding: 10px 16px;clip-path: inset(0 round 6px);borde…

官宣|HelpLook現已入駐釘釘應用市場,助力企業知識管理知識

前一陣子OpenAI公司最新的GPT-4o技術震撼發布&#xff0c;人工智能的實際應用前景再次引起行業矚目&#xff0c;或者被GPT4o的數據分析等特色功能折服。如您正尋求將AI技術融入企業知識管理&#xff0c;不要錯過HelpLook&#xff01;HelpLook AI知識庫已經正式入駐釘釘應用市場…

Flutter 中的 SlideTransition 小部件:全面指南

Flutter 中的 SlideTransition 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;SlideTransition 是一個動畫組件&#xff0c;用于創建滑動動畫效果&#xff0c;使得子組件可以沿著一個軸滑動進入或滑動退出視圖。這種動畫效果常用于頁面轉場、菜單展開收起、元素的添加…

2024-5-8——給植物澆水

2024-5-8 題目來源我的題解方法一 模擬 題目來源 力扣每日一題&#xff1b;題序&#xff1a;2079 我的題解 方法一 模擬 依次模擬澆水動作 使用一個變量 cap維護剩余的水量&#xff0c;使用t作為還未澆水的樹的下標。當從第 i?1株植物到達第 i株植物時&#xff1a; 如果 ca…

前端中css穿透樣式:deep的用法

在前端開發中&#xff0c;尤其是使用 Vue.js 這樣的框架時&#xff0c;有時我們需要在子組件中修改或影響由父組件傳遞下來的樣式。然而&#xff0c;由于組件的封裝和樣式隔離&#xff0c;直接修改子組件中的樣式可能不起作用。這時&#xff0c;我們可以使用 ::v-deep 偽元素來…

基于Android的家庭理財APP的設計與實現(論文+源碼)_kaic

摘 要 隨著我國居民收入和生活水平的提高&#xff0c;家庭理財成為人們熱議的焦點問題。在需求分析階段&#xff0c;系統從用戶的實際需求出發&#xff0c;確定了用戶賬戶管理、記賬、數據分析和提醒功能等幾個核心需求。用戶賬戶管理包括用戶注冊、登錄和密碼找回等基本操作…

【4th chapter】信息安全技術—安全技術、安全架構、安全策略、安全管理、軟件的脆弱性

概要 安全技術安全架構安全策略安全管理軟件的脆弱性加密技術&#xff08;Encryption Technology&#xff09;安全域架構&#xff08;Security Domain Architecture&#xff09;訪問控制策略&#xff08;Access Control Policy&#xff09;信息安全管理體系&#xff08;Inform…

面試數據庫八股文十問十答第六期

面試數據庫八股文十問十答第六期 作者&#xff1a;程序員小白條&#xff0c;個人博客 相信看了本文后&#xff0c;對你的面試是有一定幫助的&#xff01;關注專欄后就能收到持續更新&#xff01; ?點贊?收藏?不迷路&#xff01;? 1&#xff09;來說說一條 SQL 語句的執行…

leetcode題目238

除自身以外的數組的乘積 中等 給你一個整數數組 nums&#xff0c;返回 數組 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘積 。 題目數據 保證 數組 nums之中任意元素的全部前綴元素和后綴的乘積都在 32 位 整數范圍內。 請 不要使用除法&…

大數據技術Hbase列數據庫——topic1

目錄 搭建單機版Hbase驗證方法一驗證方法二 搭建單機版Hbase 驗證方法一 使用 jps 命令查看 HMaster 進程是否啟動 首先使用xftp 7上傳hbase-2.1.0安裝壓縮包到虛擬機進行解壓縮到某一地址&#xff0c;這里解壓縮到了上傳的路徑即/root/software/ tar -zxvf hbase-2.1.0-bi…

進程與線程學習

多線程 tthreading.Thread(targettask,arge(11,)) start&#xff08;&#xff09;開始 join&#xff08;&#xff09;等待 主線程在默認情況下會等待所有非守護線程&#xff08;子線程&#xff09;結束后才會結束程序。也就是說&#xff0c;如果主線程在結束前沒有調用所有…

2025第十屆美陳展

展位又遭瘋搶&#xff01;2025第十屆美陳展釋放“無界之美” 美是全球通用的語言&#xff0c;人類對美的追求始終如一&#xff0c;大眾審美在經歷了時代的變遷后開始趨同&#xff0c;東方文明深處的美學經濟開始崛起。 在如今商業邁入存量階段&#xff0c;以品牌為突破口打造…

基于 vuestic-ui 實戰教程 - 登錄篇

1. 簡介 登錄做為一個系統的門面&#xff0c;也是阻擋外界的一道防線&#xff0c;那在vuestic-ui中如何做登錄功能呢。在這里就之間沿用初始版本的Login頁面&#xff0c;作為一個演示模板&#xff0c;后續需要改進的讀者可以在此篇文章的基礎上修改。 2. 登錄接口相關api 與 t…