当前位置: 首页 > 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

相关文章:

  • CSP信奥赛新增的算法-马拉车算法(Manacher‘s Algorithm)
  • 初识java
  • git切换分支后需要pull吗
  • cGAS-STING通路
  • 解决 TypeError: unsupported operand type(s) for -: ‘NoneType‘ and ‘float‘ 错误
  • 前端服务器部署分类总结
  • 带直流音量控制的立体声音频功率放大器—D2668
  • 第二十四天打卡
  • 服务器被打了怎么应对
  • Vue3吸顶导航的实现
  • Nginx配置与应用案例详解
  • 每周靶点:STEAP1、NPR1及文献分享
  • 快速定位到源码位置的插件 - vite/webpack
  • 量子算法:开启计算新时代的技术密码
  • Java基础之静态代理和动态代理
  • Excel中批量对多个结构相同的工作表执行操作,可以使用VBA宏来实现
  • HCIP(BFD)
  • 音频生成技术的前沿探索:从语音合成到智能Podcast
  • C# winform 日志 NLog
  • LeetCode 热题 100 230. 二叉搜索树中第 K 小的元素
  • A股午后拉升,沪指收复3400点:大金融发力,两市成交超1.3万亿元
  • 国台办:台湾自古属于中国,历史经纬清晰,法理事实清楚
  • 国家林草局原党组成员、副局长李春良接受审查调查
  • 广州一饮品店取名“警茶”?市监局:取名没问题,但图像会产生误解
  • “降息潮”延续,多家民营银行下调存款利率
  • 上海下周最高气温在30℃附近徘徊,夏天越来越近