/*
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.

Note: You can only move either down or right at any point in time.

 

Example 1:


Input: grid = [[1,3,1],[1,5,1],[4,2,1]]
Output: 7
Explanation: Because the path 1 → 3 → 1 → 1 → 1 minimizes the sum.
Example 2:

Input: grid = [[1,2,3],[4,5,6]]
Output: 12
 

Constraints:

m == grid.length
n == grid[i].length
1 <= m, n <= 200
0 <= grid[i][j] <= 100
*/
class Solution {
    func minPathSum(_ grid: [[Int]]) -> Int {
        var board = Array(repeating: Int.max, count: grid.first?.count ?? 0)
        board[0] = 0
        for row in grid {
            for j in 0..<row.count {
                if j == 0 {
                 board[j] += row[j]   
                } else {
                    board[j] = min(board[j], board[j-1]) + row[j]
                }
            }
        }
        return board.last ?? 0
    }
}