LeetCode hot 100—不同路徑

題目

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

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

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

示例

示例 1:

輸入:m = 3, n = 7
輸出:28

示例 2:

輸入:m = 3, n = 2
輸出:3
解釋:
從左上角開始,總共有 3 條路徑可以到達右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下

示例 3:

輸入:m = 7, n = 3
輸出:28

示例 4:

輸入:m = 3, n = 3
輸出:6

分析

動態規劃

算法思路

設?dp[i][j]?表示機器人到達第?i?行第?j?列網格的不同路徑數量。

邊界條件

  • 當機器人位于第一行時,由于它只能從左邊的網格向右移動到達,所以對于第一行的任意列?j,都有?dp[0][j] = 1
  • 當機器人位于第一列時,由于它只能從上方的網格向下移動到達,所以對于第一列的任意行?i,都有?dp[i][0] = 1

狀態轉移方程

  • 對于其他位置?(i, j)i > 0?且?j > 0),機器人可以從上方的網格?(i - 1, j)?向下移動一步到達,也可以從左邊的網格?(i, j - 1)?向右移動一步到達。因此,到達?(i, j)?的不同路徑數量等于到達?(i - 1, j)?的路徑數量加上到達?(i, j - 1)?的路徑數量,即?dp[i][j] = dp[i - 1][j] + dp[i][j - 1]

最終結果

  • 要求的是機器人到達右下角網格?(m - 1, n - 1)?的不同路徑數量,即?dp[m - 1][n - 1]

時間復雜度:O(m\times n)

空間復雜度:O(m\times n)

class Solution {
public:int uniquePaths(int m, int n) {// 創建一個二維數組 dp 來存儲到達每個網格的不同路徑數量std::vector<std::vector<int>> dp(m, std::vector<int>(n, 0));// 初始化第一行,因為從起點到第一行的任意位置都只有一種路徑(一直向右走)for (int j = 0; j < n; ++j) {dp[0][j] = 1;}// 初始化第一列,因為從起點到第一列的任意位置都只有一種路徑(一直向下走)for (int i = 0; i < m; ++i) {dp[i][0] = 1;}// 填充 dp 數組,根據狀態轉移方程計算到達每個位置的不同路徑數量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];}
};    

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

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

相關文章

pytorch查詢字典、列表維度

輸出tensor變量維度 print(a.shape)輸出字典維度 for key, value in output_dict.items():if isinstance(value, torch.Tensor):print(f"{key} shape:", value.shape)輸出列表維度 def get_list_dimensions(lst):# 基線條件&#xff1a;如果lst不是列表&#xff0…

多坐標系變換全解析:從相機到WGS-84的空間坐標系詳解

多坐標系變換全解析:從相機到WGS-84的空間坐標系詳解 一、常見坐標系簡介二、各坐標系的功能和使用場景1. WGS-84 大地坐標系(經緯高)2. 地心直角坐標系(ECEF)3. 本地 ENU / NED 坐標系4. 平臺坐標系(Body)5. 相機坐標系三、坐標變換流程圖四、如何選用合適的坐標系?五…

【NumPy科學計算:高性能數組操作核心指南】

目錄 前言&#xff1a;技術背景與價值當前技術痛點解決方案概述目標讀者說明 一、技術原理剖析核心概念圖解關鍵技術模塊技術選型對比 二、實戰演示環境配置要求核心代碼實現運行結果驗證 三、性能對比測試方法論量化數據對比結果分析 四、最佳實踐推薦方案 ?常見錯誤 ?調試技…

【特權FPGA】之PS/2鍵盤解碼

0 故事背景 見過這種接口的朋友們&#xff0c;大概都已經成家立業了吧。不過今天我們不討論這種接口的歷史&#xff0c;只講講這種接口的設計。&#xff08;如果還沒有成家的朋友也別生氣&#xff0c;做自己想做的事情就對了&#xff01;&#xff09; 1 時序分析 數據幀格式如圖…

DAPP實戰篇:使用web3.js實現前端輸入錢包地址查詢該地址的USDT余額—操作篇

專欄:區塊鏈入門到放棄查看目錄-CSDN博客文章瀏覽閱讀396次。為了方便查看將本專欄的所有內容列出目錄,按照順序查看即可。后續也會在此規劃一下后續內容,因此如果遇到不能點擊的,代表還沒有更新。聲明:文中所出觀點大多數源于筆者多年開發經驗所總結,如果你想要知道區塊…

高中生學習數據隱私保護的“技術-制度-文化”協同機制研究

一、引言 1.1 研究背景與意義 在數字化時代的浪潮下&#xff0c;教育領域正經歷著深刻的變革&#xff0c;智能教育平臺如雨后春筍般涌現&#xff0c;為高中教育帶來了新的活力與機遇。這些平臺借助先進的信息技術&#xff0c;能夠實時收集、分析大量的高中生學習數據&#xf…

【Java多線程】告別線程混亂!深度解析Java多線程4大實現方式(附實戰案例)

一、繼承Thread類 實現步驟&#xff1a; 1.繼承Thread類 2.重寫run()方法 3.創建線程對象并調用start()方法 示例&#xff1a; class MyThread extends Thread {Overridepublic void run() {for (int i 0; i < 5; i) {System.out.println(Thread.currentThread().getNam…

全國產V7-690T核心板/算法驗證板/FPGA開發板

UD SOM-404全國產化信號處理模塊既可以作為核心板使用&#xff0c;也可以單獨使用。FPGA對外有80組GTY通過兩個FMC連接器全部引出&#xff0c;多個模塊可以級聯使用&#xff0c;擴展信號處理能力。FMC連接器也滿足標準規范&#xff0c;可以插入標準的FMC或FMC子板。模塊為100%國…

STM32_HAL庫提高中斷執行效率

目錄 中斷流程分析我的解決辦法優缺點 大家都在說STM32 HAL 庫中斷效率低下。具體哪里不行&#xff1f;如何優化&#xff1f; 我手里的項目要用到多個定時器TIM6、TIM7、TIM9、TIM10、TIM11、TIM12、TIM13&#xff0c;在處理這些定時器中斷的時候&#xff0c;也發現了這個問題。…

RabbitMQ惰性隊列的工作原理、消息持久化機制、同步刷盤的概念、延遲插件的使用方法

惰性隊列工作原理 惰性隊列通過盡可能多地將消息存儲到磁盤上來減少內存的使用。與傳統隊列相比&#xff0c;惰性隊列不會主動將消息加載到內存中&#xff0c;而是盡量讓消息停留在磁盤上&#xff0c;從而降低內存占用。盡管如此&#xff0c;它并不保證所有操作都是同步寫入磁…

Spark Core(二)

Spark-Core編程&#xff08;二&#xff09; RDD轉換算子 RDD 根據數據處理方式的不同將算子整體上分為 Value 類型、雙 Value 類型和 Key-Value 類型 Value類型 1&#xff09;map 將處理的數據逐條進行映射轉換&#xff0c;這里的轉換可以是類型的轉換&#xff0c;也可以是…

C#打開文件及目錄腳本

如果每天開始工作前都要做一些準備工作&#xff0c;比如打開文件或文件夾&#xff0c;我們可以使用代碼一鍵完成。 using System.Diagnostics; using System.IO;namespace OpenFile {internal class Program{static void Main(string[] args){Console.WriteLine("Hello, …

Python生成exe

其中的 -w 參數是 PyInstaller 用于窗口模式&#xff08;Windowed mode&#xff09;&#xff0c;它會關閉命令行窗口的輸出&#xff0c;這通常用于 圖形界面程序&#xff08;GUI&#xff09;&#xff0c;比如使用 PyQt6, Tkinter, PySide6 等。 所以&#xff1a; 如果你在沒有…

【大模型微調】如何解決llamaFactory微調效果與vllm部署效果不一致如何解決

以下個人沒整理太全 一、生成式語言模型的對話模板介紹 使用Qwen/Qwen1.5-0.5B-Chat訓練 對話模板不一樣。回答的內容就會不一樣。 我們可以看到例如qwen模型的tokenizer_config.json文件&#xff0c;就可以看到對話模板&#xff0c;一般同系列的模型&#xff0c;模板基本都…

Linux網絡編程——詳解網絡層IP協議、網段劃分、路由

目錄 一、前言 二、IP協議的認識 1、什么是IP協議&#xff1f; 2、IP協議報頭 三、網段劃分 1、初步認識IP與路由 2、IP地址 I、DHCP動態主機配置協議 3、IP地址的劃分 I、CIDR設計 II、子網數目的計算 III、子網掩碼的確定 四、特殊的IP地址 五、IP地址的數量限…

ansible+docker+docker-compose快速部署4節點高可用minio集群

目錄 github項目地址 示例服務器列表 安裝前 修改變量文件group_vars/all.yml 修改ansible主機清單 修改setup.sh安裝腳本 用法演示 安裝后驗證 github項目地址 https://github.com/sulibao/ansible_minio_cluster.git 示例服務器列表 安裝前 修改變量文件group_var…

MySql主從相關概念

想象一下&#xff0c;你的業務飛速增長&#xff0c;用戶請求如潮水般涌來&#xff0c;突然數據庫主庫宕機&#xff0c;數據丟失&#xff0c;服務癱瘓——這簡直是開發者的噩夢&#xff01;MySQL主從復制就像一張安全網&#xff0c;通過主庫寫、從庫讀的協作模式&#xff0c;不僅…

機械臂只有位置信息是否可以進行手眼標定?

平常我在做手眼標定時&#xff0c;一般都是通過OpenCV的cv::calibrateHandEye函數進行求解&#xff0c;需要輸入多組不同的機械臂位姿。今天遇到了一款舵機機器人&#xff0c;只能獲取位置&#xff0c;得不到姿態信息&#xff0c;想著那就把姿態都設為0&#xff0c;結果求不出來…

華為數字芯片機考2025合集2已校正

單選 1. 題目內容 關于亞穩態的描述錯誤的是&#xff08; &#xff09;。 1. 解題步驟 1.1 理解亞穩態&#xff08;Metastability&#xff09;的核心特性 亞穩態是指觸發器無法在指定時間內穩定輸出有效邏輯電平&#xff08;0或1&#xff09;的狀態&#xff0c;其關鍵特點…

T-Box車載系統介紹及其應用

定義 T-Box汽車系統&#xff0c;全稱為Telematics - BOX&#xff0c;也常簡稱為車載T - BOX&#xff0c;是汽車智能系統及車聯網系統中的核心組成部分&#xff0c;是安裝在車輛上的一種高科技遠程信息處理器。 工作原理 T-Box的核心功能主要通過MPU和MCU實現。MPU負責應用程序功…