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

代码随想录 106. 岛屿的周长

106. 岛屿的周长

#include<bits/stdc++.h>
using namespace std;int main(){int n, m;cin >> n >> m;vector<vector<int>> mp(n, vector<int>(m, 0));for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){cin >> mp[i][j];}}int landNum = 0;int neighborNum = 0;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (mp[i][j] == 1){landNum++;if (i < n - 1){if (mp[i + 1][j] == 1) neighborNum++;}if (j < m - 1){if (mp[i][j + 1] == 1) neighborNum++;}}}}cout << (4 * landNum - 2 * neighborNum);return 0;
}

这题没必要用图的遍历算法,直接遍历一遍更加简单,且时间复杂度差不多,不过也还是可以有巧思。笔者更喜欢随想录所提的第二种算法,一个陆地有4条边,如果与别的陆地相邻,那就有两条陆地的边不是岛的边缘,所以遍历中只需要关注陆地的数量,以及陆地的邻接数量就可以轻松的得到答案,也就是4 * landNum - 2 * neighborNum

代码随想录 106. 岛屿的周长

http://www.lryc.cn/news/458517.html

相关文章:

  • 阿里云融合认证中的App端一键登录能力
  • 基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • vue-插槽作用域实用场景
  • Prometheus+Grafana 监控 K8S Ingress-Ningx Controller
  • 如何在Visual Studio 2019中创建.Net Core WPF工程
  • 自然语言处理(NLP)论文数量的十年趋势:2014-2024
  • .net core API中使用LiteDB
  • YOLO_V8分割
  • 根据请求错误的状态码判断代理配置问题
  • Python 网络爬虫高阶用法
  • 芯片Tapeout前GDS Review | Calibre中如何切出gds中指定区域版图?
  • 43 | 单例模式(下):如何设计实现一个集群环境下的分布式单例模式?
  • PHP如何解决异常处理
  • C++ socket编程(3)
  • Collection-LinkedList源码解析
  • vue判断对象数组里是否有重复数据
  • CSS 3D转换
  • 51单片机数码管循环显示0~f
  • 【编程进阶知识】Java NIO:掌握高效的I/O多路复用技术
  • vscode创建flutter项目,运行flutter项目
  • STM32之CAN外设
  • 【阅读笔记】水果轻微损伤的无损检测技术应用
  • 忘记7-zip密码,如何解压文件?
  • SpringBoot基础(一)
  • Java智能匹配灵活用工高效人力资源管理系统小程序源码
  • openpdf
  • C#垃圾回收机制详解
  • 身份证二要素核验操作指南
  • 量子数字签名概述
  • 算法题——合并 k 个升序的链表