当前位置: 首页 > news >正文

代码随想录算法训练营Day58

力扣695.岛屿的最大面积【medium】
力扣827.最大人工岛【hard】

一、力扣695.岛屿的最大面积【medium】

题目链接:力扣695.岛屿的最大面积
在这里插入图片描述
视频链接:代码随想录

1、思路

  • 和岛屿数量那道题很像,只是递归这边要多一个怎么计算面积,就是把一格一格的1累加起来
  • 时间复杂度: O ( n ∗ m ) O(n * m) O(nm)
  • 空间复杂度: O ( n ∗ m ) O(n * m) O(nm)

2、代码

class Solution:def maxAreaOfIsland(self, grid: List[List[int]]) -> int:m = len(grid)n = len(grid[0])def dfs(i,j) -> int:if i < 0 or i >= m or j < 0 or j >= n or grid[i][j] != 1:return 0grid[i][j] = 2ans = 1for di, dj in [[0, 1], [0, -1], [1, 0], [-1, 0]]:ans += dfs(i + di, j + dj)return ans ans = 0for i, row in enumerate(grid):for j, c in enumerate(row):ans = max(ans, dfs(i,j))return ans

二、力扣827.最大人工岛【hard】

题目链接:力扣827.最大人工岛
在这里插入图片描述
视频链接:代码随想录
题解链接:力扣官方题解

1、思路

  • 先算出来并按岛屿标记面积,这一步是递归实现,记录面积用的是哈希表–字典Counter
  • 最后一次的双层fou循环,时间的建造人工岛,将某个0 变成1,这一步也用了set来避免碰到重复岛屿
  • 时间复杂度: O ( n ) O(n) O(n)

2、代码

class Solution:def largestIsland(self, grid: List[List[int]]) -> int:n = len(grid)tag = [[0] * n for _ in range(n)]area = Counter()def dfs(i:int,j:int) -> None:tag[i][j] = tarea[t] += 1for x, y in (i - 1, j), (i + 1, j), (i, j - 1), (i, j + 1):if 0 <= x < n and 0 <= y < n and grid[x][y] and tag[x][y] == 0:dfs(x,y)for i, row in enumerate(grid):for j , c in enumerate(row):if c and tag[i][j] == 0:t = i * n + j + 1dfs(i,j)ans = max(area.values(), default = 0)for i, row in enumerate(grid):for j , c in enumerate(row):if c == 0:ner_area = 1connected = {0}for x, y in (i - 1, j), (i + 1, j), (i, j - 1), (i, j + 1):if 0 <= x < n and 0 <= y < n and tag[x][y] not in connected:ner_area += area[tag[x][y]]connected.add(tag[x][y])ans = max(ans, ner_area)return ans

http://www.xdnf.cn/news/454321.html

相关文章:

  • 01-three.js vite基础示例
  • 机器视觉助力轨道缺陷检测
  • Python常用魔术方法
  • 分布式2(限流算法、分布式一致性算法、Zookeeper )
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-强化学习算法AlphaGo
  • sqlalchemy库详细使用
  • 【C++】17. 多态
  • AI智能体应用平台-智能体定制-企业级agent开发平台哪个更好?
  • 【嵌入式开发-按键扫描】
  • 从构想到交付:专业级软开发流程详解
  • c++中的函数(默认参数,占位参数,重载)
  • Arduino使用红外收发模块
  • MySQL基础之开窗函数
  • 嵌入式(c语言篇)Day9
  • 基于nacos2.5.1的java微服务项目开发环境配置简介
  • Spyglass:跨时钟域同步(同步单元)
  • Gin 框架指南(代码+通俗解析版)
  • 2025前四月新能源汽车出口增长52.6%,外贸ERP数字化助力汽企持续跃升
  • 给 DBGridEh 增加勾选用的检查框 CheckBox
  • 通用软件项目技术报告 - 导读I
  • C++ 并发编程(1)再学习,为什么子线程不调用join方法或者detach方法,程序会崩溃? 仿函数的线程启动问题?为什么线程参数默认传参方式是值拷贝?
  • 阿里的库存秒杀实现与Inventory Hint技术解析
  • Windows系统Anaconda/Miniconda的安装、配置、基础使用、清理缓存空间和Pycharm/VSCode配置指南
  • Linux系统编程——fork函数的使用方法
  • idea插件使用
  • Prometheus 的介绍与部署(入门)
  • Spring 的 异常管理的相关注解@ControllerAdvice 和@ExceptionHandler
  • 2011-2019年各省总抚养比数据
  • 【GESP真题解析】第 5 集 GESP一级 2023 年 3 月编程题 2:长方形面积
  • Python实例题:Python抓取相亲网数据