LeetCode 64. Minimum Path Sum

Published:

LeetCode 64. Minimum Path Sum

Problem link

Key idea:

  • Dynamic programming

dp

My solution

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid)
    {

      int answer = 0;
      // Initialize
      vector<vector<int>> dp = grid;
      for (int i = 0; i < grid.size(); i++)
      {
        for (int j = 0; j < grid[0].size(); j++)
        {
          dp[i][j] = 0;
        }
      }
      // Execption case
      if (dp.size() == 0 && dp[0].size() == 0)
      {
        return grid[0][0];
      }

      // Dynamic programming
      for (int i = 0; i < dp.size(); i++)
      {
        for (int j = 0; j < dp[0].size(); j++)
        {
          if (i == 0 && j == 0)
          {
            dp[i][j] = grid[i][j];
          }
          else if (i > 0 && j > 0)
          {
            dp[i][j] = grid[i][j] + min(dp[i - 1][j], dp[i][j - 1]);
          }
          else if (i > 0)
          {
            dp[i][j] = grid[i][j] + dp[i - 1][j];
          }
          else if (j > 0)
          {
            dp[i][j] = grid[i][j] + dp[i][j - 1];
          }
        }
      }
      return dp[dp.size() - 1][dp[0].size() - 1];
    }
};

Result

Runtime: 12 ms, faster than 46.32% of C++ online submissions for Minimum Path Sum.

Memory Usage: 10.2 MB, less than 22.37% of C++ online submissions for Minimum Path Sum.