47の最大値Golang面の質問の贈り物

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
	}
}
公開された38元の記事 ウォンの賞賛0 ビュー1043

おすすめ

転載: blog.csdn.net/Cyan1956/article/details/104448602