【代碼隨想錄_Day28】62. 不同路徑 63. 不同路徑 II

Day28 OK,今日份的打卡!第二十八天

  • 以下是今日份的總結
    • 不同路徑
    • 不同路徑 II

以下是今日份的總結

62 不同路徑
63 不同路徑 II

今天的題目難度不低,盡量還是寫一些簡潔代碼 ^?_?^

不同路徑

思路:

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]。
----此時在回顧一下 dp[i - 1][j] 表示啥,是從(0, 0)的位置到(i - 1, j)有幾條路徑,dp[i][j - 1]同理。
----那么很自然,dp[i][j] = dp[i - 1][j] + dp[i][j - 1],因為dp[i][j]只有這兩個方向過來。

3.dp數組的初始化
----如何初始化呢,首先dp[i][0]一定都是1,因為從(0, 0)的位置到(i, 0)的路徑只有一條,那么dp[0][j]也同理。
----for (int i = 0; i < m; i++) dp[i][0] = 1;
----for (int j = 0; j < n; j++) dp[0][j] = 1;

4.確定遍歷順序
這里要看一下遞推公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1],dp[i][j]都是從其上方和左方推導而來,那么從左到右一層一層遍歷就可以了。
這樣就可以保證推導dp[i][j]的時候,dp[i - 1][j] 和 dp[i][j - 1]一定是有數值的。

5.舉例推導dp數組
m = 3 , n = 7
1 1 1 1 1 1 1
1 2 3 4 5 6 7
1 3 6 10 15 21 28

值得注意的是

注意動態規劃的五個步驟

   int uniquePaths(int m, int n) {vector<vector<int>> dp(m, vector<int>(n, 0));for(int i = 0; i<m;i++) dp[i][0] = 1;for(int j = 0; j<n;j++) dp[0][j] = 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];//從[0,0]開始}

不同路徑 II

思路:

和上題思路是一樣的

值得注意的是

遍歷賦值的時候多加一個判斷條件跳過obstacleGrid中值為1 的部分即可
無論如何都要用dp數組重寫

    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m = obstacleGrid.size();int n = obstacleGrid[0].size();if (obstacleGrid[m - 1][n - 1] == 1 ||obstacleGrid[0][0] == 1) // 如果在起點或終點出現了障礙,直接返回0return 0;vector<vector<int>> dp(m, vector<int>(n, 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++) {if (obstacleGrid[i][j] == 1)continue;dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m - 1][n - 1];}

寫在最后

----OK,今日份的博客就寫到這里,這一期的貪心算法好難想,明天繼續加油!!!
—還沒看下期的題,但是我的棧還有一節沒寫;
–追上時間進度了!!(笑
-扭一扭,轉一轉,又是健康滴一天😊。

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

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

相關文章

算法學習筆記(8.2)-動態規劃入門進階

目錄 問題判斷: 問題求解步驟&#xff1a; 圖例&#xff1a; 解析&#xff1a; 方法一&#xff1a;暴力搜索 實現代碼如下所示&#xff1a; 解析&#xff1a; 方法二&#xff1a;記憶化搜索 代碼示例&#xff1a; 解析&#xff1a; 方法三&#xff1a;動態規劃 空間…

每日復盤-20240709

今日關注: 20240709 六日漲幅最大: ------1--------300391--------- 長藥控股 五日漲幅最大: ------1--------300391--------- 長藥控股 四日漲幅最大: ------1--------603155--------- 新亞強 三日漲幅最大: ------1--------301300--------- 遠翔新材 二日漲幅最大: ------1-…

基于antdesign封裝一個react的上傳組件

項目中遇到了一個上傳的需求&#xff0c;看了一下已有的代碼很粗糙&#xff0c;而且是直接引用andt的組件&#xff0c;體驗不太好&#xff0c;自己使用FormData對象封裝了一個上傳組件&#xff0c;僅供參考。 代碼如下&#xff1a; /*** FileUploadModal* description - 文件選…

Qt入門(二):Qt的基本組件

目錄 Designer程序面板 1、布局Layout 打破布局 貼合窗口 2、QWidget的屬性 3、Qlabel標簽 顯示圖片 4、QAbstractButton 按鈕類 按鈕組 5、QLineEdit 單行文本輸入框 6、ComboBox 組合框 7、若干與數字相關的組件 Designer程序面板 Qt包含了一個Designer程序 &…

Qt編程技巧總結篇(3)-信號-槽-多線程(二)

文章目錄 Qt編程技巧總結篇&#xff08;3&#xff09;-信號-槽-多線程&#xff08;二&#xff09;主進程與子線程線程同步實例與應用 小結 Qt編程技巧總結篇&#xff08;3&#xff09;-信號-槽-多線程&#xff08;二&#xff09; 多線程學習&#xff0c;使用QMutex&#xff0c;…

RTK_ROS_導航(3):點云的壓縮,PointCloud轉scan

目錄 1. 源碼的安裝2. 修改訂閱的話題3. 可視化1. 源碼的安裝 安裝過程如下 mkdir -p point_to_scan_ws/src cd point_to_scan_ws/src git clone https://github.com/BluewhaleRobot/pointcloud_to_laserscan.git cd .. catkin_make source devel/setup.bash2. 修改訂閱的話題 …

2024.07.01校招 實習 內推 面經

綠*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;內推/實習/校招匯總表格 1、校招 | 元戎啟行2025校園招聘正式批正式啟動&#xff08;內推&#xff09; 校招 | 元戎啟行2025校園招聘正式批正式啟動&#xff08;內推&#xff09; 2、提前批 | 多益網絡2025屆校園…

基于抽象 HandlerInterceptor 快速實現接口鑒權

歡迎關注公眾號&#xff1a;冬瓜白 相關文章&#xff1a; 每天學習一點點之 Spring Web MVC 之抽象 HandlerInterceptor 快速實現常用功能&#xff08;限流、權限等&#xff09; 在[每天學習一點點之 Spring Web MVC 之抽象 HandlerInterceptor 快速實現常用功能&#xff08…

Numpy的廣播機制(用于自動處理不同形狀的數組)

NumPy 廣播是一種強大的機制&#xff0c;允許 NumPy 在執行元素級運算時自動處理不同形狀的數組。廣播的規則使得無需顯式地創建匹配形狀的數組&#xff0c;直接進行運算&#xff0c;大大簡化了代碼并提高了效率。 基本概念 廣播的基本思想是讓較小的數組在需要的維度上進行擴…

【MySQL數據庫之概念性問題】

1、關系型數據庫和非關系型數據庫 關系型數據庫&#xff08;Relational Database&#xff0c;簡稱RDBMS&#xff09;和非關系型數據庫&#xff08;NoSQL Database&#xff09;是兩種不同的數據庫類型。SQL本身叫做結構化查詢語言1、關系型數據庫&#xff1a;&#xff08;MySQL…

Django 更新數據 save()方法

1&#xff0c;添加模型 Test/app11/models.py from django.db import modelsclass Post(models.Model):title models.CharField(max_length200)content models.TextField()pub_date models.DateTimeField(date published)class Book(models.Model):title models.CharFie…

Spring Boot集成grpc快速入門demo

1.什么是GRPC&#xff1f; gRPC 是一個高性能、開源、通用的RPC框架&#xff0c;由Google推出&#xff0c;基于HTTP2協議標準設計開發&#xff0c;默認采用Protocol Buffers數據序列化協議&#xff0c;支持多種開發語言。gRPC提供了一種簡單的方法來精確的定義服務&#xff0c…

UE5.3-基礎藍圖類整理一

常用藍圖類整理&#xff1a; 1、獲取當前關卡名&#xff1a;Get Current LevelName 2、通過關卡名打開關卡&#xff1a;Open Level(by name) 3、碰撞檢測事件&#xff1a;Event ActorBeginOverlap 4、獲取當前player&#xff1a;Get Player Pawn 5、判斷是否相等&#xff1…

深入解析CSS中的!important規則:優先級與最佳實踐

先上實踐&#xff0c;再討論設計 在實際工程中&#xff0c;!important 的使用場景通常出現在需要確保某個樣式規則具有最高優先級&#xff0c;以覆蓋其他可能沖突的樣式規則時。以下是一個具體的例子&#xff1a; 場景描述 假設你正在開發一個網站&#xff0c;該網站使用了多…

JavaScript的數組與函數

數組 <script type"text/javascript">/** 知識點&#xff1a;數組* 理解&#xff1a;一維數組的容器* 概念&#xff1a;* 1.數組中的數據叫做元素* 2.元素都有編號叫做下標/索引* 3.下標從0開始* 注意&#xff1a;* 1.數組作為數據的容器…

【JavaScript腳本宇宙】狀態管理利器:JavaScript 庫全面解析

提升項目效率與可維護性&#xff1a;JavaScript 狀態管理庫大揭秘 前言 在現代前端開發中&#xff0c;狀態管理是一個至關重要的話題。隨著復雜性的增加&#xff0c;有效地管理應用程序的狀態變得越來越具有挑戰性。本文將介紹一些流行的 JavaScript 庫&#xff0c;這些庫提供…

WEB安全基礎:網絡安全常用術語

一、攻擊類別 漏洞&#xff1a;硬件、軟件、協議&#xff0c;代碼層次的缺陷。 后?&#xff1a;方便后續進行系統留下的隱蔽后?程序。 病毒&#xff1a;一種可以自我復制并傳播&#xff0c;感染計算機和網絡系統的惡意軟件(Malware)&#xff0c;它能損害數據、系統功能或攔…

C++語言學習精簡筆記(包含C++20特性)

目錄 1 C新語法C與CC編譯運行String編程范式C基礎類型**自動類型推導**統一對象初始化&#xff1a;Uniform Initialization 控制結構if語句for語句switch語句namespace 2 函數函數聲明形式參數函數參數傳遞的選擇函數返回值的選擇 函數重載 Lambda表達式函數的定義和申明生存期…

磁力貓磁力搜索大全教程,如何使用磁力鏈接

磁力鏈接是一種特殊的下載鏈接&#xff0c;磁力鏈接可以理解為一個文件識別碼&#xff0c;而并非具體的資源地址&#xff0c;下載軟件需要拿著這個識別碼去整個互聯網(DHT網絡)去尋找持有該資源的用戶(節點)&#xff0c;如果找到則可以進行傳輸下載。一般年代越久遠的磁力鏈接下…

【一】m2芯片的mac中安裝ubuntu24虛擬機集群

文章目錄 1. 虛擬機配置2. 復制虛擬機2.1 修改主機名2.2 修改網絡 1. 虛擬機配置 在官方網站下載好ubuntu24-arm版鏡像開始安裝&#xff0c;安裝使用VMWare Fusion的社區免費授權版,使用一臺m2芯片的mac電腦作為物理機平臺。 為什么選擇ubuntu24&#xff1f;因為centOS7目前已…