golang力扣leetcode 1765.地图中的最高点

golang力扣leetcode 1765.地图中的最高点,第1张

1765.地图中的最高点 1765.地图中的最高点题解代码

1765.地图中的最高点

1765.地图中的最高点

题解

看到题目立马想到BFS,模板水题

代码
package main

type pair struct {
	i, j int
}

var dis = []pair{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}

func highestPeak(isWater [][]int) [][]int {
	queue := make([]pair, 0)
	result := make([][]int, len(isWater))
	for i, val1 := range isWater {
		result[i] = make([]int, len(val1))
		for j, val2 := range val1 {
			if val2 == 0 {
				result[i][j] = -1
			} else {
				result[i][j] = 0
				queue = append(queue, pair{i, j})
			}
		}
	}
	for len(queue) > 0 {
		now := queue[0]
		queue = queue[1:]
		for _, step := range dis {
			nextI, nextJ := now.i+step.i, now.j+step.j
			if nextI >= 0 && nextI < len(isWater) &&
				nextJ >= 0 && nextJ < len(isWater[0]) && result[nextI][nextJ] == -1 {
				result[nextI][nextJ] = result[now.i][now.j] + 1
				queue = append(queue, pair{nextI, nextJ})
			}
		}
	}
	return result
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/994530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存