47の最大値面接の質問の贈り物
各セル内の各ギフトは、特定の値(0よりも大きい値)を有し、M * N個の基板はギフトを持って入れています。あなたはボードの右下隅に到達するまで、右または下にグリッドの贈り物、毎回セルを取るためにボードの角を左上から開始することができます。チェス盤とあなたが最も貴重な贈り物を得ることができますどのくらいの計算、上記の贈り物の価値を考えると?
例1:
入力
:[[1,3,1]、
[1,5,1]、
[4,2,1]]
出力: 2
説明:パス1→3→5→2→ 1 で最も価値の贈り物を得ることができます
ヒント:
0 < grid.length <= 200
0 < grid[0].length <= 200
私の答え
func maxValue(grid [][]int) int {
for i := 0; i < len(grid); i++ { //row
for j := 0; j < len(grid[0]); j++ { //col
valAbove, flagAbove := tryGet(grid, i-1, j)
valLeft, flagLeft := tryGet(grid, i, j-1)
if flagAbove {
if flagLeft {
if valAbove > valLeft {
grid[i][j] += valAbove
} else {
grid[i][j] += valLeft
}
} else {
grid[i][j] += valAbove
}
} else {
if flagLeft {
grid[i][j] += valLeft
}
}
}
}
return grid[len(grid)-1][len(grid[0])-1]
}
func tryGet(grid [][]int, i int, j int) (int, bool) {
if i >= 0 && i <= len(grid) && j >= 0 && j <= len(grid[0]) {
return grid[i][j], true
} else {
return 0, false
}
}