• leetcode-1162


    这题典型的广度搜索,但是如何理解呢,对于这种宏观问题,我们不能死扣细节,否则铁写不出来,比如你死扣每条路径,那么问题来了,重复的咋办?所以丢掉细节,就给一个广度搜索的框架。还有个重要的一点是,啥叫最远,题解某人写的不错,你扔石头,哪边水波最后到,说明就是最远的。

    所以一条路径走到底的最后一个,绝对就是最长的。

    type Point struct {
        X int
        Y int
    }
    
    func maxDistance(grid [][]int) int {
        var queue []*Point
        for i := 0; i < len(grid); i++ {
            for j := 0; j < len(grid[0]); j++ {
                if grid[i][j] == 1 {
                    queue = append(queue, &Point{i, j})
                }
            }
        }
        if len(queue) == 0 || len(queue) == len(grid)*len(grid[0]) {
            return -1
        }
    
        ans := 0
        d := [4][2]int{{1, 0}, {-1, 0}, {0, 1}, {0, -1}}
        for len(queue) > 0 {
            ans++
            tempQue := queue
            queue = nil
            for len(tempQue) > 0 {
                p := tempQue[0]
                tempQue = tempQue[1:]
                for i := 0; i < 4; i++ {
                    x := p.X + d[i][0]
                    y := p.Y + d[i][1]
                    if x < 0 || x >= len(grid) || y < 0 || y >= len(grid[0]) || grid[x][y] != 0 {
                        continue
                    }
                    queue = append(queue, &Point{x, y})
                    grid[x][y] = 2
                }
            }
        }
        return ans-1
    }

    end

     
    一个没有高级趣味的人。 email:hushui502@gmail.com
  • 相关阅读:
    linux常用命令
    Python 父类调用子类方法
    import win32api 安装pip install pypiwin32
    Python 封装DTU-215码流卡 第一天
    git apply -v 提示 Skipped patch 打不上patch的解决办法
    2019/10/29
    12/9/2019
    11/9/2019
    9/7/2019
    人生若有命中注定
  • 原文地址:https://www.cnblogs.com/CherryTab/p/12595923.html
Copyright © 2020-2023  润新知