1. 程式人生 > >LeetCode進階之路(Minimum Path Sum)

LeetCode進階之路(Minimum Path Sum)

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

題目:還是尋找路徑,不過這次是尋找最短的路徑。

思路:還是使用動態規劃。

public class Solution {
    public int minPathSum(int[][] grid) {
    if(grid == null || grid.length==0)
        return 0;
 
    int m = grid.length;
    int n = grid[0].length;
 
    int[][] dp = new int[m][n];
    dp[0][0] = grid[0][0];    
 
    // initialize top row
    for(int i=1; i<n; i++){
        dp[0][i] = dp[0][i-1] + grid[0][i];
    }
 
    // initialize left column
    for(int j=1; j<m; j++){
        dp[j][0] = dp[j-1][0] + grid[j][0];
    }
 
    // fill up the dp table
    for(int i=1; i<m; i++){
        for(int j=1; j<n; j++){
            if(dp[i-1][j] > dp[i][j-1]){
                dp[i][j] = dp[i][j-1] + grid[i][j];
            }else{
                dp[i][j] = dp[i-1][j] + grid[i][j];
            }
        }
    }
 
    return dp[m-1][n-1];
}
}

種一棵樹最好的時間是十年前,其次是現在!



相關推薦

LeetCodeMinimum Path Sum

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right whic

LeetCodeRotate List

Given a list, rotate the list to the right by k places, where k is non-negative. For example: Give

LeetCode3Sum Closest)

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the

LeetCodeUnique Paths

A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The robot can only move either down or

Java 從入門到二十一

在之前的文章我們介紹了一下 Java 中的日期操作,本章我們來看一下 Java 集合框架中的Collection。 早在 Java 2 中之前,Java 就提供了特設類。比如:Dictionary, Vector, Stack, 和 Properties 這些類用來儲存和操作物件組。 雖然這些類都非常有用,但

Java 從入門到二十四

在之前的文章我們介紹了一下 Java 中的  集合框架中的Collection 的泛型,本章我們來看一下 Java 集合框架中的Collection 的子介面 List。 Collection 介面有 3 種子型別,List、Set 和 Queue,其中 List 和 Set 的區別是 Set 中不

Java 從入門到二十五

在之前的文章我們介紹了一下 Java 中的  集合框架中的Collection 的子介面 List的 增刪改查和與陣列間相互轉換的方法,本章我們來看一下 Java 集合框架中的Collection 的子介面 List 的另外一些方法。 我們在使用集合的時候難免會對其中的元素進行排序,因為 Set 集

Java 從入門到二十六

在之前的文章我們介紹了一下 Java 中的  集合框架中的Collection 的子介面 List,本章我們來看一下 Java 集合框架中的Collection 的子介面 Queue。 在之前我們講 List 和 Set 的時候可以通過下標的形式獲取想要的元素,在 Collection 中其實還有

Java 從入門到二十八

在之前的文章我們都是通過 Java 在記憶體中應用,本章開始我們來看一下 Java 在系統檔案(硬碟)上的操作。 系統檔案就是我們電腦中的檔案,簡單來說就是像 Windows 系統中 C D E 等各類碟符中的檔案。Java 在系統檔案的操作需要通過  File 來完成。 接下來我們通過一個簡單的例

Java 從入門到二十九

在之前的文章我們已經可以對本地對檔案和目錄進行新建和刪除等操作,接下來我們來對檔案內對具體內容進行操作。 如下程式碼,我們實現了一個基本的檔案寫入: 1 /** 2 * java.io.RandomAccessFile 3 * 用來讀寫檔案資料 4 * RAF是基於指標進行讀寫的,即RAF總是

基礎篇 - 011 arduino api基礎手冊

異或 change 可用 算術運算符 chan 程序結構 換算 是否 關閉 arduino 函數 api 程序結構 在Arduino中, 標準的程序入口main函數在內部被定義, 用戶只需要關心以下兩個函數:void setup()void loop()setup() 函數

基礎篇 - 008 SPI數據傳輸(庫函數方法)

ria att clockd == bus 屏蔽 attach serial out 主機端: 1 /********************************* 2 代碼功能:SPI數據傳輸(主機端) 3 引腳說明: 4 SS/CS:片選(高電平屏

基礎篇 - 009 通過底層AVR方法實現SPI數據傳輸

lean oop and return false 進階 from setup pie 主機端: /********************************* 代碼功能:通過底層AVR方法實現SPI數據傳輸(主機端) 創作時間:2016*10*17 使用資源:

基礎篇 - 007 脈沖寬度測量

style 函數 long 最大 void serial 作者 println 電平 1 /********************************* 2 代碼功能:Pulse脈沖寬度測量 3 使用函數: 4 pulseIn(引腳號,脈沖響應電平,

中級篇 - 018 基於arduino的簡易版智能衣架

檢驗 dig cloc 布線 pin on() -- mage 根據 一. 設備及要求 目的:制作一個可以自動根據事實的天氣的狀況進行對衣架上的衣服進行晾曬。 基礎裝置:可伸縮的晾衣架。 開發環境:Arduino1. 8.1 主控板:Arduino UNO 動力裝置:

JavaScript的函數簡介,變量、作用域和內存問題

ret 優化 person get 簡介 web瀏覽器 都是 add 是把 <h3>ECMAScript中函數不存在函數簽名的概念,沒有重載</h3><h3>無需指定返回值,可以在任何時候返回任何值。未指定返回值的函數,返回的是一個特殊

JavaScript的引用類型Object類型和Array類型

reverse 代碼 -1 替換 fine 設置 sha unshift sum 引用類型 Object類型 function a(num){ if(num>3){ a(--num); } console.log(num);

慕課 從零到一spark

1.RDD RDD是spark特有的資料模型,談到RDD就會提到什麼彈性分散式資料集,什麼有向無環圖,本文暫時不去展開這些高深概念。 (0)隨便找個點理解以下 最重要的記住,RRD是不可變的,也就是說,已有的RDD不能被修改或者更新,但可以從已有的RDD轉化成一個新的RDD. 上面的

Java小白

1、字串操作:replace方法(舊字串,新子串)。 Scanner scanner = new Scanner(System.in); System.out.println("請輸入"); // 接收使用者的輸入的字串 String s1 = scanner.next(); // 接受整型 i

C#反射的應用

  反射在C#中的應用還是很多的,但它對程式碼的效能有一定影響。 反射的效能:   使用反射來呼叫型別或者觸發方法,或者訪問一個欄位或者屬性時clr 需要做更多的工作:校驗引數,檢查許可權等等,所以速度是非常慢的。所以儘量不要使用反射進行程式設計,對於打算編寫一個動態構造型別(晚繫結)的應用程