LeetCode 64. Minimum Path Sum
Published:
LeetCode 64. Minimum Path Sum
Problem link
Key idea:
- Dynamic programming
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.