代码随想三刷图论篇2

代码随想三刷图论篇2

  • 104. 建造最大岛屿
    • 题目
    • 代码
  • 110. 字符串接龙
    • 题目
    • 代码
  • 105. 有向图的完全可达性
    • 题目
    • 代码
  • 106. 岛屿的周长
    • 题目
    • 代码

104. 建造最大岛屿

题目

链接

代码

import java.util.*;
class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);int N = sc.nextInt();//行int M = sc.nextInt();//列int[][] pic = new int[N][M];used = new boolean[N][M];for(int i =0;i<N;i++){for(int j =0;j<M;j++){pic[i][j] = sc.nextInt();if(pic[i][j]==0){used[i][j] = true;}}}int maxCount = 0;int index = 1;Map<Integer,Integer> map = new HashMap(); for(int i =0;i<N;i++){for(int j =0;j<M;j++){if(pic[i][j]==1){list.clear();dfs(pic,i,j);for(int k = 0;k<list.size();k++){int[] temp= list.get(k);pic[temp[0]][temp[1]] = index;}map.put(index,list.size());maxCount = Math.max(maxCount,list.size());index++;}}}for(int i =0;i<N;i++){for(int j =0;j<M;j++){if(pic[i][j]==0){Set<Integer> sett = new HashSet();int count = 1;if(i>=1 && !sett.contains(pic[i-1][j])){count+=map.getOrDefault(pic[i-1][j],0);sett.add(pic[i-1][j]);}if(j>=1 && !sett.contains(pic[i][j-1])){count+=map.getOrDefault(pic[i][j-1],0);sett.add(pic[i][j-1]);}if(i<pic.length-1 && !sett.contains(pic[i+1][j])){count += map.getOrDefault(pic[i+1][j],0);sett.add(pic[i+1][j]);}if(j<pic[0].length-1 && !sett.contains(pic[i][j+1])){count+=map.getOrDefault(pic[i][j+1],0);sett.add(pic[i][j+1]);}maxCount = Math.max(maxCount,count);}}}System.out.println(maxCount);}static boolean[][] used;static List<int[]> list = new ArrayList();public static void dfs(int[][] pic,int i,int j){if(i<0||j<0||i>=pic.length||j>=pic[0].length||used[i][j]){return;}used[i][j] = true;list.add(new int[]{i,j});if(i>=1){dfs(pic,i-1,j);}if(j>=1){dfs(pic,i,j-1);}if(i<pic.length-1){dfs(pic,i+1,j);}if(j<pic[0].length-1){dfs(pic,i,j+1);}}
}

110. 字符串接龙

题目

链接

代码

import java.util.*;class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);int N = Integer.valueOf(sc.nextLine());String beginStr = sc.next();String endStr = sc.next();Set<String> strList = new HashSet();for(int i = 0;i<N;i++){strList.add(sc.next());}int count = 0;Deque<String>  queue = new LinkedList();queue.addLast(beginStr);while(!queue.isEmpty()){count++;int size = queue.size();for(int step = 0;step<size;step++){String word = queue.removeFirst();for(int i=0;i< word.length();i++){char[] chars = word.toCharArray();for(char k = 'a';k<='z';k++){chars[i] = k;   String newWord = String.valueOf(chars);if(newWord.equals(endStr)){System.out.println(count+1);return;}if(strList.contains(newWord)){strList.remove(newWord);queue.addLast(newWord);}}}}}System.out.println(0);}
}

105. 有向图的完全可达性

题目

链接

代码

import java.util.*;class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);int N = sc.nextInt();int K = sc.nextInt();Map<Integer,Set<Integer>> map = new HashMap();for(int i =1;i<=N;i++){map.put(i,new HashSet());}for(int i = 0;i<K;i++){int num1 = sc.nextInt();int num2 = sc.nextInt();map.get(num1).add(num2);}used = new boolean[N+1];dfs(map,1);for(int i =1;i<=N;i++){if(!used[i]){System.out.println(-1);return;}}System.out.println(1);}static boolean[] used;public static void dfs(Map<Integer,Set<Integer>> map,int key){if(used[key]){return;}used[key] = true;Set<Integer> set =map.get(key);for(int nextNum:set){dfs(map,nextNum);}}
}

106. 岛屿的周长

题目

链接

代码

import java.util.*;class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);int N = sc.nextInt();int M = sc.nextInt();int[][] pic = new int[N][M];for(int i=0;i<N;i++){for(int j=0;j<M;j++){pic[i][j] = sc.nextInt();}}int sum = 0;    // 陆地数量int cover = 0;  // 相邻数量for (int i = 0; i < N; i++) {for (int j = 0; j < M; j++) {if (pic[i][j] == 1) {sum++; // 统计总的陆地数量// 统计上边相邻陆地if(i - 1 >= 0 && pic[i - 1][j] == 1) cover++;// 统计左边相邻陆地if(j - 1 >= 0 && pic[i][j - 1] == 1) cover++;// 为什么没统计下边和右边? 因为避免重复计算}}}System.out.println(sum * 4 - cover * 2 );}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安全运营概述

安全运营概述 概述安全运营的工作对内安全运营工作对外安全运营工作品牌建设 概述 安全是一个过程&#xff0c;安全是靠运营出来的&#xff0c;公司会不断的有新业务的变更&#xff0c;新产品的发布&#xff0c;新版本的升级&#xff0c;技术架构的升级&#xff0c;底层系统的…

Commons-Collections篇-CC6链分析

前言 我们前两篇已经分析过URLDNS链和CC1链&#xff0c;我们这次分析的链就是基于前两条链之上的CC6链 CC6链的使用对于版本来说没有CC1限制那么大&#xff0c;只需要commons collections 小于等于3.2.1&#xff0c;都存在这个漏洞 0.环境安装 可以接着使用我们之前分析CC1链…

AV1技术学习:Affine Motion Compensation

一、Affine Model Parameter 除了传统的平移运动补偿&#xff0c;AV1 还支持仿射变换模型&#xff0c;将当前像素点 (x, y) 通过以下方式投影到参考帧中的预测像素点 (x, y). 参数 (h13, h23) 对应于平移模型中使用的常规运动向量。 参数 h11 和 h22 控制垂直和水平轴上的比例…

unseping

nnnd&#xff0c;这道题谁标的难度1&#xff01;参考文章&#xff1a;江苏工匠杯-unseping&序列化&#xff0c;正则绕过(全网最简单的wp)_江苏工匠杯unseping-CSDN博客 这是这道题的源码&#xff0c;一看exec和unserialize就是反序列化和命令执行&#xff0c;还有个正则应…

JS【详解】函数 (声明函数、调用函数、函数表达式、匿名函数、立即执行函数、箭头函数、内置函数、回调函数、私有函数、高阶函数、模拟函数重载)

函数用于封装一段具有特定功能代码&#xff0c;通过调用的形式执行。 每个函数都有返回值&#xff0c;无 return 语句时返回 undefined 声明函数 在浏览器中&#xff0c;在最外层声明的函数&#xff0c;都是 Window 对象的方法函数的声明会被提前&#xff1a;可以在函数声明之…

QThread和std::thread

在 Qt 中&#xff0c; 我们经常会用到多线程&#xff0c;这时候就需要纠结是使用 Qt 的 QThread 还是使用 C 标准库的 std::thread。 这里记录一下我自己的理解&#xff0c;先介绍一下 QThread 和 std::thread 的使用方法&#xff0c;对比一下他们的不同&#xff0c;最后说一下…

【Redis】集群

文章目录 一、集群是什么&#xff1f;二、 Redis集群分布式存储为什么redis集群的最大槽数是16384&#xff08;不太懂&#xff09;redis的集群主节点数量基本不可能超过1000个 三、 配置集群&#xff08;三主三从&#xff09;3.1 配置config文件3.2 启动六台redis3.2 通过redis…

理兔chat开发日记

1.注册 注册跟以前的差不多&#xff0c;我们将我们的验证码放在redis下&#xff0c;我们在注册的时候先判断我们输入的验证码是否正确 验证码成功后在我们的实现类中&#xff0c;我们先判断邮箱是否重复&#xff0c;不重复我们就继续注册 我们拥有联号注册的功能&#xff0c;就…

unity局部坐标和世界坐标角度介绍

在Unity中&#xff0c;局部坐标&#xff08;Local Coordinates&#xff09;和世界坐标&#xff08;World Coordinates&#xff09;是描述物体位置的两种不同方式&#xff1a; 局部坐标&#xff08;Local Coordinates&#xff09;&#xff1a; 局部坐标是相对于物体自身的坐标系…

Puppeteer 是什么以及如何在网络抓取中使用它 | 2024 完整指南

网页抓取已经成为任何处理网页数据提取的人都必须掌握的一项重要技能。无论你是开发者、数据科学家还是希望从网站收集信息的爱好者&#xff0c;Puppeteer都是你可以使用的最强大工具之一。本完整指南将深入探讨什么是Puppeteer以及如何有效地在网页抓取中使用它。 Puppeteer简…

日志的编写与线程池的结合

目录 一、认识日志 二、时间的等级划分 三、日志的输出端 3.1 保存至文件 四、日志的部分信息 4.1 日志等级 4.2 日志时间 五、加载日志 六、日志的宏编写 七、ThreadPool Log 一、认识日志 记录事件&#xff1a; 日志用于记录系统运行过程中发生的各种事件&…

Linux硬件中断(IRQ)的基础知识

目录 一、中断的概念1.1 什么是硬件中断1.2 中断类型二、中断处理的工作原理2.1 中断请求2.2 中断向量2.3 中断服务例程(ISR)2.4 上下文切换2.5 中断处理2.6 任务恢复三、中断处理的编程3.1 注册中断处理函数3.2 注销中断处理函数四、中断和系统性能4.1 中断风暴4.2 IRQ亲和性…

创作模板四【创作模板】

xxx【创作模板四】 前言推荐说明最后 前言 2023年7月7日 以下内容源自《【创作模板四】》 仅供学习交流使用 推荐 无 说明 大三下期末考试进行中 【最后】的文案&#xff1a; 当时期末复习总结的文章&#xff0c;很少有人点赞 确实是很失望&#xff0c;只能自娱自乐&…

数据库SQL Server时间函数Datetime

文章目录 SQL Server 提供了一系列用于处理日期和时间的函数&#xff0c;以下是一些常用的时间函数&#xff1a; GETDATE()&#xff1a;返回当前的日期和时间。 SELECT GETDATE();CURRENT_TIMESTAMP&#xff1a;与 GETDATE() 类似&#xff0c;返回当前的日期和时间。 SELECT…

CloudCone服务器2核1G一年只需15刀

CloudCone服务器博主本人已稳定使用一年多了&#xff0c;非常划算且稳定。2核1G一年才15&#xff0c;相比其他厂家2核动辄月付10左右的价格&#xff0c;cloudcone简直没有对手。 但是15刀这些划算的内容无法在官网直接找到。 博主这里记录 cloudcone.top 这个url&#xff0c;…

Linux Vim编辑器全攻略:从入门到精通

引言 简要介绍Vim编辑器的历史、地位及其在Linux及Unix系统中的广泛应用。强调Vim作为程序员和系统管理员的首选工具之一&#xff0c;其强大的文本编辑能力和高效的编辑模式。 Vim基础篇 安装Vim 介绍在不同Linux发行版上安装Vim的方法&#xff08;如使用apt-get、yum、dnf等…

elementui 日历组件el-calendar使用总结

功能&#xff1a; 1.日历可以周视图、月视图切换&#xff1b; 2.点击月视图中日期可以切换到对应周视图&#xff1b; 3.点击周视图查看当日对应数据&#xff1b; 4.周、月视图状态下&#xff0c;点击前后按钮&#xff0c;分别切换对应上下的周、月&#xff1b; 5.点击回到…

算法 —— 高精度(模拟)

目录 加法高精度 两个正整数相加 两个正小数相加 两正数相加 减法高精度 两个正整数相减 两个正小数相减 两正数相减 加减法总结 乘法高精度 两个正整数相乘 两个正小数相乘 乘法总结 加法高精度 题目来源洛谷&#xff1a;P1601 AB Problem&#xff08;高精&#x…

单片机外围设备-EEPROM

eeprom用iic通信。eeprom有几个特点需要关注&#xff1a; 1、可以单字节读写 2、eeprom按页划分存储&#xff0c;不同型号的eeprom的页大小不一致&#xff0c;往eeprom写数据时&#xff0c;如果写到了该页的末尾&#xff0c;会自动从该页的开头继续写&#xff0c;把之前的数据…

如何PR到别人仓库(指定分支,无废话)

如何PR到别人仓库&#xff08;指定分支&#xff09; 记录一下&#xff0c;之前都是直接master分支&#xff0c;现在记录如何pr到别人仓库的其他分支 首先进入别人仓库然后点击fork到自己仓库 步骤&#xff08;以博主自己一个例子为例&#xff09; &#xff08;1&#xff09;…