2023年7月24日 星期一

[64] Minimum Path Sum

寫完上一題(比樓下),這一題就變成一塊蛋糕了(竊笑)

還是比較喜歡把初始值拉出來寫,不過就會多兩個回圈長在code裡面,似乎不討喜XD
修一修把它們用一個迴圈解決,就比較像leetcode上面會被貼出來的解法 XD
以上兒~~~

#define min(A,B) (A < B)?(A):(B)

#if 1
int minPathSum(int** grid, int gridSize, int* gridColSize){
int i,j;
for (i=0;i<gridSize;i++)
for (j=0;j<(*gridColSize);j++)
{
if (i>0 && j>0)
grid[i][j] +=min(grid[i-1][j], grid[i][j-1]);
else if (i==0 && j==0)
continue;
else if (i==0)
grid[0][j]+=grid[0][j-1];
else if (j==0)
grid[i][0]+=grid[i-1][0];

}
return grid[gridSize-1][(*gridColSize)-1];
}

#else

int minPathSum(int** grid, int gridSize, int* gridColSize){
int m=gridSize;
int n= *gridColSize;
int i,j;
for (j=1;j<n;j++)
grid[0][j]+=grid[0][j-1];

for (i=1;i<m;i++)
grid[i][0]+=grid[i-1][0];

for (i=1;i<m;i++)
for (j=1;j<n;j++)
{
int tmp = min(grid[i-1][j], grid[i][j-1]);
grid[i][j] +=tmp;
}

return grid[m-1][n-1];
}
#endif

沒有留言:

張貼留言