首页 > 其他分享 >Day59 | 力扣695:岛屿的最大面积

Day59 | 力扣695:岛屿的最大面积

时间:2023-10-25 19:22:55浏览次数:36  
标签:temp 695 int 力扣 Day59 grid result nextX nextY

力扣链接

写在前面

这道题和200. 岛屿数量很像,只不过200. 岛屿数量是求岛屿总个数,这道题是求最大的岛屿面积,基本代码逻辑是一样的,只不过具体处理细节有一点不一样

思路

在主函数maxAreaOfIsland中遍历,遇到岛屿temp就计数为1,然后进入dfs函数,每次遍历到一个岛屿,temp就加1,用变量temp记录此时这个岛屿的面积,用result记录最后结果,如果temp大于result,那么更新result

话不多说上代码

class Solution {
    boolean[][] used;
    int temp = 0;

    public void dfs(int[][] grid, int x, int y) {
        int[][] directions = new int[][]{
            {1, 0}, {0, 1}, {-1, 0}, {0, -1}
        };

        for (int i = 0; i < 4; i++) {
            int nextX = x + directions[i][0];
            int nextY = y + directions[i][1];

            if (nextX < 0 || nextX >= grid.length || nextY < 0 || nextY >= grid[0].length) {
                continue;
            }

            if (!used[nextX][nextY] && grid[nextX][nextY] == 1) {
                temp++;
                used[nextX][nextY] = true;
                dfs(grid, nextX, nextY);
            }
        }
    }

    public int maxAreaOfIsland(int[][] grid) {
        used = new boolean[grid.length][grid[0].length];
        int result = 0;

        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[0].length; j++) {
                if (!used[i][j] && grid[i][j] == 1) {
                    temp = 1;
                    used[i][j] = true;
                    dfs(grid, i, j);
                    result = Math.max(result, temp);
                }
            }
        }

        return result;
    }
}

标签:temp,695,int,力扣,Day59,grid,result,nextX,nextY
From: https://www.cnblogs.com/BearFishSheep/p/17787942.html

相关文章

  • 你是不是瞧不起力扣
    leetcode「10·24」程序员节编程竞赛计算子集给你三个整数\(n,k,m\)。定义\(S=\{i\mid1\lei\lenm+k,i\in\mathbbZ\}\)请返回一个下标从\(0\)开始、长度为\(m\)的数组answer,其中answer[i]表示符合下列条件集合\(T\)的个数。集合\(T\)是集合\(S\)的子集......
  • 力扣每日一题+python知识点回顾(六)
    力扣题目:老人的数目(题号:2678)给你一个下标从0开始的字符串details。details中每个元素都是一位乘客的信息,信息用长度为15的字符串表示,表示方式如下:前十个字符是乘客的手机号码。接下来的一个字符是乘客的性别。接下来两个字符是乘客的年龄。最后两个字符是乘客的座位......
  • 力扣每日一题+python知识点回顾(五)
    力扣题目:做菜顺序(题号:1402)一个厨师收集了他n道菜的满意程度satisfaction,这个厨师做出每道菜的时间都是1单位时间。一道菜的「like-time系数」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度,也就是time[i]*satisfaction[i]。返回厨师在准备了一......
  • 力扣每日一题+python知识点回顾(四)
    力扣题目:统计无向图中无法互相到达点对数(题号:2316)给你一个整数n,表示一张无向图中有n个节点,编号为0到n-1。同时给你一个二维整数数组edges,其中edges[i]=[ai,bi]表示节点ai和bi之间有一条无向边。请你返回无法互相到达的不同点对数目。示例一:输入:n=3,edges=[[0,1],[0,2......
  • 力扣每日一题+python知识点回顾(三)
    力扣题目:根据规则将箱子分类(题号:2525)给你四个整数length,width,height和mass,分别表示一个箱子的三个维度和质量,请你返回一个表示箱子类别的字符串。如果满足以下条件,那么箱子是"Bulky"的:箱子至少有一个维度大于等于10^4。或者箱子的体积大于等于10^9。如果箱子的......
  • 力扣每日一题+python知识点回顾(二)
    力扣题目:同积元组(题号:1726)给你一个由不同正整数组成的数组nums,请你返回满足a*b=c*d的元组(a,b,c,d)的数量。其中a、b、c和d都是nums中的元素,且a!=b!=c!=d。示例1:输入:nums=[2,3,4,6]输出:8解释:存在8个满足题意的元组:(2,6,3,4),(2,6,4,3),(6,2,3,4),......
  • 力扣12.整数转罗马数字
    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如,罗马数字2写做 II ,即为两个并列的1。12写做 XII ,即为 X + I......
  • 力扣每日一题+python知识点回顾
    力扣题目:执行K次操作后的最大分数(题号:2530)给你一个下标从0开始的整数数组nums和一个整数k。你的起始分数为0。在一步操作中:选出一个满足0<=i<nums.length的下标i,将你的分数增加nums[i],并且将nums[i]替换为ceil(nums[i]/3)。返回在恰好执......
  • 力扣乱刷
    一些力扣乱刷,旨在复健。42.接雨水:单调栈。32.最长有效括号:数据结构oj原题,标记所有无效括号的位置即可,用栈维护。84.柱状图中最大的矩形:单调栈。85.最大矩形:对每一行跑一个单调栈。224.基本计算器:中缀转后缀模板题。402.移掉k位数字:每次移除序列中最靠左的极大值点,重复......
  • 力扣-120. 三角形最小路径和
    题目描述给定一个三角形triangle,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点在这里指的是下标与上一层结点下标相同或者等于上一层结点下标+1的两个结点。也就是说,如果正位于当前行的下标i,那么下一步可以移动到下一行的下标i或i+1。示例1:......