代碼隨想錄算法訓練營第三十天|62.不同路徑、63. 不同路徑 II

62.不同路徑

一個機器人位于一個 m x n 網格的左上角 (起始點在下圖中標記為 “Start” )。

機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為 “Finish” )。

問總共有多少條不同的路徑?

1. 定義dp[i][j]:到ij這個位置有幾種方法

2. 狀態轉移方程:dp[i][j] = dp[i-1][j]+dp[i][j-1]

3. 初始化:如何初始化呢,首先dp[i][0]一定都是1,因為從(0, 0)的位置到(i, 0)的路徑只有一條,那么dp[0][j]也同理。

????????dp[i][0] = 1; dp[0][i] = 1;

4. 遍歷順序:從左上角到右下角

5. 舉例打印。

class Solution {
public: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];}
};
  • 時間復雜度:O(m × n)
  • 空間復雜度:O(m × n)

63. 不同路徑 II

一個機器人位于一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。

機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。

現在考慮網格中有障礙物。那么從左上角到右下角將會有多少條不同的路徑?

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

2. dp[i][j] = dp[i-1][j]+dp[i][j-1]. if obs[i][j]==0

3.初始化:obs[i][0]==0/obs[0][j]==0, dp[i][0]=1, dp[0][j]=1;

4. 遍歷,從左上角到右下角,碰到obstacles直接continue。

5. 舉例打印。

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m = obstacleGrid.size();int n = obstacleGrid[0].size();vector<vector<int>> dp(m, vector<int>(n, 0));if(obstacleGrid[0][0]==1||obstacleGrid[m-1][n-1]==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++){if(obstacleGrid[i][j]==1) continue;dp[i][j] = dp[i-1][j]+dp[i][j-1];}}return dp[m-1][n-1];}
};
  • 時間復雜度:O(n × m),n、m 分別為obstacleGrid 長度和寬度
  • 空間復雜度:O(n × m)

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

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

相關文章

軟設之生成器模式

生成器模式的意圖是:將一個復雜的類表示與其構造分離&#xff0c;使得相同的構建過程能夠得出不同的表示 Builder:抽象建造者&#xff0c;為創建一個產品對象各個部件指定抽象接口&#xff0c;把產品的生產過程分解為不同的步驟&#xff0c;從而使具體建造者在具體的建造步驟上…

Java中的對象克隆詳解

Java中的對象克隆詳解 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 對象克隆在Java編程中是一個重要的概念和技術。它允許我們創建一個對象的精確副本&…

MySQL第三次練習

作業三 一 先創建DB abc&#xff0c;創建table student 1、插入一條記錄 2、添加多條記錄 3、添加部分記錄 4、加0.5 5、刪除成績為空的記錄 二 1、創建一個用戶test1使他只能本地登錄擁有查詢student表的權限。 2、查詢用戶test1的權限。 3、刪除用戶test1. 全在一張圖上…

怎樣優化 PostgreSQL 中對日期時間范圍的模糊查詢?

文章目錄 一、問題分析&#xff08;一&#xff09;索引未有效利用&#xff08;二&#xff09;日期時間格式不統一&#xff08;三&#xff09;復雜的查詢條件 二、優化策略&#xff08;一&#xff09;使用合適的索引&#xff08;二&#xff09;規范日期時間格式&#xff08;三&a…

AI學習指南機器學習篇-層次聚類(Hierarchical Clustering)簡介

AI學習指南機器學習篇-層次聚類(Hierarchical Clustering)簡介 在機器學習領域中&#xff0c;層次聚類(Hierarchical Clustering)是一種常見的無監督學習算法&#xff0c;用于將數據集中的樣本分成具有相似特征的群組。層次聚類不需要預先指定要分成的群組數目&#xff0c;而是…

邏輯回歸模型(非回歸問題,而是分類問題)

目錄&#xff1a; 一、Sigmoid函數&#xff1a;二、邏輯回歸介紹&#xff1a;三、決策邊界四、邏輯回歸模型訓練過程&#xff1a;1.訓練目標&#xff1a;2.梯度下降調整參數&#xff1a; 一、Sigmoid函數&#xff1a; Sigmoid函數是構建邏輯回歸模型的重要函數&#xff0c;如下…

免費壓縮pdf文件大小軟件收費嗎?pdf如何壓縮文件大小?12款壓縮應用推薦!

在數字化時代&#xff0c;PDF文件因其跨平臺、格式統一的特點而廣受歡迎。然而&#xff0c;隨著文件內容的增加&#xff0c;PDF文件的大小也逐漸增大&#xff0c;給存儲和傳輸帶來了諸多不便。因此&#xff0c;尋找一款合適的PDF壓縮軟件成為了許多用戶的需求。本文將詳細介紹1…

單調隊列與單調棧(集訓day2)

一、目錄 1、單調隊列 2、單調棧 二、正文 1.單調棧題型&#xff1a; &#xff08;1&#xff09;給出一個數組找出其中每個數左邊第一個比它小&#xff08;大&#xff09;的數字 830. 單調棧 - AcWing題庫 &#xff08;2&#xff09;求直方圖中最大的矩形&…

電子設備常用的膠水有哪些?

目錄 1、502膠水 2、703膠水 3、704膠水 4、AB膠 5、紅膠 6、Underfill 7、導電膠 8、UV膠 9、熱熔膠 10、環氧樹脂膠 11、硅酮膠 12、聚氨酯膠 13、丙烯酸膠 14、丁基膠 1、502膠水 502膠水&#xff0c;也被稱為瞬間膠或快干膠&#xff0c;是一種非常常見的粘合…

電動卡丁車語音芯片方案選型:讓駕駛體驗更智能、更安全

在追求速度與激情的電動卡丁車領域&#xff0c;每一次升級都意味著更加極致的駕駛體驗。而今天&#xff0c;我們要介紹的&#xff0c;正是一款能夠顯著提升電動卡丁車智能化與安全性的語音芯片方案——為您的愛車增添一份獨特的魅力與安全保障。 智能化升級&#xff0c;從“聽…

[Python學習篇] Python面向對象——繼承

繼承是什么 繼承是面向對象編程&#xff08;OOP&#xff09;中的一個核心概念。繼承允許一個類&#xff08;稱為子類或派生類&#xff09;從另一個類&#xff08;稱為父類或基類&#xff09;繼承屬性和方法。這樣可以重用代碼&#xff0c;提高代碼的模塊化和可維護性。 父類&am…

js面試題2024

1.js的數據類型 boolean number string null undefined bigint symbol object 按存儲方式分&#xff0c;前面七種為基本數據類型&#xff0c;存儲在棧上&#xff0c;object是引用數據類型&#xff0c;存儲在堆上&#xff0c;在棧中存儲指針 按es標準分&#xff0c;bigint 和sym…

PHP框架講解 - symfony框架

Symfony 框架概述 Symfony 是一個用于構建 web 應用的 PHP 框架&#xff0c;它遵循 MVC&#xff08;模型-視圖-控制器&#xff09;模式&#xff0c;并且具有高度的可定制性。Symfony 是一個組件庫&#xff0c;它提供了許多用于構建現代 web 應用的工具和功能。以下是對 Symfon…

布隆過濾器 redis

一.為什么要用到布隆過濾器&#xff1f; 緩存穿透&#xff1a;查詢一條不存在的數據&#xff0c;緩存中沒有&#xff0c;則每次請求都打到數據庫中&#xff0c;導致數據庫瞬時請求壓力過大&#xff0c;多見于爬蟲惡性攻擊因為布隆過濾器是二進制的數組&#xff0c;如果使用了它…

FLD工作日志

在FLD的工作日志 一、技能掌握楊總經驗的傳輸 一、技能掌握 06.12 學會如何看小產品的代碼&#xff0c;看的消毒燈 07.08 1.學會嘉立創eda 楊總經驗的傳輸 07.07 什么能做就做什么&#xff0c;一刻也不要停不要看不起簡單的事情&#xff0c;量變引起質變

科普文:K8S中常見知識點梳理

簡單說一下k8s集群內外網絡如何互通的 要在 Kubernetes&#xff08;k8s&#xff09;集群內外建立網絡互通&#xff0c;可以采取以下措施&#xff1a; 使用service&#xff1a; 使用Service類型為NodePort或LoadBalancer的Kubernetes服務。這可以使服務具有一個公共IP地址或端口…

怎么發頂會論文

AI頂會論文成功發表路徑四&#xff1a;寫作關_嗶哩嗶哩_bilibili 全集都有&#xff0c;隨手記錄一下。 講的很好&#xff0c;我多努力。努力靠近一下。

Open3D 計算點云的平均密度

目錄 一、概述 1.1基于領域密度計算原理 1.2應用 二、代碼實現 三、實現效果 2.1點云顯示 2.2密度計算結果 一、概述 在點云處理中&#xff0c;點的密度通常表示為某個點周圍一定區域內的點的數量。高密度區域表示點云較密集&#xff0c;低密度區域表示點云較稀疏。計算…

Redis連接Resp圖形化工具和springboot

Redis連接Resp圖形化工具和springboot 1.redis配置1.1 備份、修改conf文件1.2 Redis的其它常見配置&#xff1a;1.3 啟動Redis&#xff1a;1.4 停止服務&#xff1a;1.5 開機自啟&#xff1a; 2. resp的安裝、配置和連接&#xff1a;2.1 GitHub上下載2.2 開始連接redis ![在這里…