LeetCode第2658题 - 网格图中鱼的最大数目

题目

解答

java 复制代码
class Solution {
  public int findMaxFish(int[][] grid) {
    int maxCount = Integer.MIN_VALUE;
    int m = grid.length;
    int n = grid[0].length;
    for (int i = 0; i < m; ++i) {
      for (int j = 0; j < n; ++j) {
        int value = grid[i][j];
        if (value == 0) {
          continue;
        }

        int count = bfs(grid, i, j);
        maxCount = Math.max(maxCount, count);
      }
    }

    return maxCount == Integer.MIN_VALUE ? 0 : maxCount;
  }

  int bfs(int[][] grid, int row, int column) {
    int m = grid.length;
    int n = grid[0].length;

    int count = 0;

    LinkedList<int[]> queue = new LinkedList<>();
    queue.add(new int[]{row, column});

    while (!queue.isEmpty()) {
      int[] position = queue.removeFirst();
      int r = position[0];
      int c = position[1];
      if (r < 0 || r >= m || c < 0 || c >= n) {
        continue;
      }

      int value = grid[r][c];
      if (value == 0) {
        continue;
      }

      count += value;
      grid[r][c] = 0;
      queue.add(new int[]{r, c + 1});
      queue.add(new int[]{r, c - 1});
      queue.add(new int[]{r + 1, c});
      queue.add(new int[]{r - 1, c});
    }

    return count;
  }
}

总结

使用广度优先算法,遍历地图。

相关推荐
ZHang......2 小时前
LeetCode 1114. 按序打印
java·开发语言·算法
测试人社区-千羽2 小时前
AR/VR应用测试核心要点与实施策略
人工智能·安全·职场和发展·自动驾驶·测试用例·ar·vr
仰泳的熊猫3 小时前
1083 List Grades
数据结构·c++·算法·pat考试
Tan_Zhixia3 小时前
时间复杂度判断
数据结构·c++·算法
雪弯了眉梢3 小时前
OpenGL(八)摄像机(Camera)
算法·图形渲染·opengl
~~李木子~~3 小时前
基于 MovieLens-100K 数据集的推荐算法设计与实现
算法·机器学习·推荐算法
Abona3 小时前
智驾空间智能、物理智能、世界模型相关的最新论文和开源算法链接
算法
sonadorje4 小时前
群的阶、元素的阶和基点G的阶详解
算法·安全
csuzhucong4 小时前
一阶鬼魔魔方
算法