亚麻 原创 最新面试一题精解

题目: 服务网格,经过几小时, 文件拓扑全网

{0,1,0,1,0},   =>     {1,1,1,1,1},
{0,1,0,0,1},          {1,1,1,1,1},
{0,1,0,0,1}           {1,1,1,1,1}

public int max(int[][] grid) {
        int result = 0;

        for (int r = 0; r < grid.length; r++) {
            for (int c = 0; c < grid[0].length; c++) {
                if (grid[r][c] == 1) {
                    queue.offer(new IntPair(r,c,1));
                }
            }
        }

        while (queue.peek() != null) {
            IntPair node = queue.poll();

            if (!(0 <= r && r < grid.length
                && 0 <= c && c < grid[0].length) &&
                grid[node.r][node.c] > 1) {
                continue;
            }

            grid[node.r][node.c] = node.step+1;

            if(result<grid[node.r][node.c]){
                result = grid[node.r][node.c];
            }

            queue.offer(new IntPair(node.r - 1 , node.c , grid[node.r][node.c]));
            queue.offer(new IntPair(node.r + 1 , node.c , grid[node.r][node.c]));
            queue.offer(new IntPair(node.r , node.c - 1 , grid[node.r][node.c]));
            queue.offer(new IntPair(node.r , node.c + 1 , grid[node.r][node.c]));
        }

        return result-2;
    }
1 Like

有人说 这是烂橙子事件!