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

代码随想录算法训练营DAY58|101.孤岛的总面积、102.沉没孤岛、103. 水流问题、104.建造最大岛屿

忙。。。写了好久。。。。慢慢补吧。

101.孤岛的总面积

  • 先把周边的岛屿变成水
  • dfs
def dfs(x, y, graph, s):if x<0 or x>=len(graph) or y<0 or y>=len(graph[0]) or graph[x][y]==0:return sgraph[x][y]=0s+=1s = dfs(x+1, y, graph, s)s = dfs(x-1, y, graph, s)s = dfs(x, y+1, graph, s)s = dfs(x, y-1, graph, s)return sif __name__=='__main__':n,m = map(int,input().split())graph=[]for i in range(n):row = list(map(int, input().split()))graph.append(row)for i in range(n):if graph[i][0]==1:dfs(i,0,graph,0)if graph[i][m-1]==1:dfs(i,m-1,graph,0)for j in range(m):if graph[0][j]==1:dfs(0,j,graph,0)if graph[n-1][j]==1:dfs(n-1,j,graph,0)s_t = 0for x in range(n):for y in range(m):if graph[x][y]==1:s=dfs(x,y,graph,0)s_t+=sprint(s_t)

102.沉没孤岛

from collections import dequedef bfs(x, y, graph):graph[x][y]=2que = deque([[x,y]])while que:x, y = que.popleft()directions = [[0,1],[0,-1],[1,0],[-1,0]]for k in range(4):x0, y0 = directions[k]new_x = x+x0new_y = y+y0if new_x>=0 and new_x<len(graph) and new_y>=0 and new_y<len(graph[0]) and graph[new_x][new_y]==1:que.append([new_x, new_y])graph[new_x][new_y]=2return     if __name__=='__main__':n,m = map(int,input().split())graph=[]for _ in range(n):row = list(map(int, input().split()))graph.append(row)    for i in range(n):if graph[i][0]==1:bfs(i,0,graph)if graph[i][m-1]==1:bfs(i,m-1,graph)for j in range(m):if graph[0][j]==1:bfs(0,j,graph)if graph[n-1][j]==1:bfs(n-1,j,graph)for x in range(n):for y in range(m):if graph[x][y]==2:graph[x][y]=1elif graph[x][y]==1:graph[x][y]=0for a in range(n):for b in range(m):print(str(graph[a][b])+' ',end = '')print()

103. 水流问题

  • 注意是从边界逆流而上,判断条件应该是graph[x][y]<=graph[new_x][new_y]:
def dfs(x,y,graph,bordermatrix):if bordermatrix[x][y]:returnbordermatrix[x][y]=1directions=[[0,1],[0,-1],[1,0],[-1,0]]for i in range(4):x0,y0=directions[i]new_x = x+x0new_y = y+y0if new_x<0 or new_x>=len(graph) or new_y<0 or new_y>=len(graph[0]):continueif graph[x][y]<=graph[new_x][new_y]:dfs(new_x,new_y,graph,bordermatrix)return if __name__=='__main__':n,m=map(int, input().split())graph=[]for _ in range(n):row = list(map(int, input().split()))graph.append(row)firstborder=[[0]*m for i in range(n)]secondborder=[[0]*m for i in range(n)]for i in range(n):dfs(i,0,graph,firstborder)dfs(i,m-1,graph,secondborder)for j in range(m):dfs(0,j,graph,firstborder)dfs(n-1,j,graph,secondborder)for k in range(n):for l in range(m):if firstborder[k][l] and secondborder[k][l]:print('{} {}'.format(str(k),str(l)))

104.建造最大岛屿

def dfs(x,y,graph,visited,mark,s):directions=[[0,1],[0,-1],[1,0],[-1,0]]if visited[x][y] or not graph[x][y]:return  svisited[x][y]=Truegraph[x][y]=marks+=1for i in range(4):x0,y0=directions[i]new_x = x+x0new_y = y+y0if new_x<0 or new_x>=len(graph) or new_y<0 or new_y>=len(graph[0]):continues = dfs(new_x,new_y,graph,visited,mark,s)return sif __name__=='__main__':n,m = map(int, input().split())graph = []for i in range(n):row = list(map(int, input().split()))graph.append(row)isallgrid=Truevisited=[[False]*m for i in range(n)]islands={}islands[0]=0idx=1for j in range(n):for k in range(m):if graph[j][k]==1:s = dfs(j,k,graph,visited,idx,0)islands[idx]=sidx+=1else:isallgrid=Falseif isallgrid:print(m*n)else:result = 0for j in range(n):for k in range(m):count = 1visitedgraph=[]if graph[j][k]==0:directions=[[0,1],[0,-1],[1,0],[-1,0]]for l in range(4):j0,k0 = directions[l]new_j = j+j0new_k = k+k0if new_j<0 or new_j>=len(graph) or new_k<0 or new_k>=len(graph[0]):continueif graph[new_j][new_k] in visitedgraph: continuecount+=islands[graph[new_j][new_k]]visitedgraph.append(graph[new_j][new_k])result = max(result, count)print(result)

相关文章:

代码随想录算法训练营DAY58|101.孤岛的总面积、102.沉没孤岛、103. 水流问题、104.建造最大岛屿

忙。。。写了好久。。。。慢慢补吧。 101.孤岛的总面积 先把周边的岛屿变成水dfs def dfs(x, y, graph, s):if x<0 or x>len(graph) or y<0 or y>len(graph[0]) or graph[x][y]0:return sgraph[x][y]0s1s dfs(x1, y, graph, s)s dfs(x-1, y, graph, s)s dfs(…...

韦尔股份:深蹲起跳?

利润大增7倍&#xff0c;是反转信号还是回光返照&#xff1f; 今天我们聊聊光学半导体龙头——韦尔股份。 上周末&#xff0c;韦尔股份发布半年业绩预告&#xff0c;预计上半年净利润13至14亿&#xff0c;同比增幅高达 754%至 819%。 然而&#xff0c;回首 2023 年它的净利仅 …...

docs | 使用 sphinx 转化rst文件为html文档

1. 效果图 book 风格。 优点&#xff1a; 极简风格右边有标题导航左侧是文件导航&#xff0c;可隐藏 2. 使用方式 reST 格式&#xff0c;比markdown格式更复杂。 推荐使用 book 风格。 文档构建工具是 sphinx&#xff0c;是一个python包。 $ pip3 list | grep -i Sphinx …...

【ChatGPT 消费者偏好】第二弹:ChatGPT在日常生活中的使用—推文分享—2024-07-10

今天的推文主题还是【ChatGPT & 消费者偏好】 第一篇&#xff1a;哪些动机因素和技术特征的组合能够导致ChatGPT用户中高和低的持续使用意图。第二篇&#xff1a;用户对ChatGPT的互动性、性能期望、努力期望以及社会影响如何影响他们继续使用这些大型语言模型的意向&#x…...

Webpack配置及工作流程

Webpack是一个现代JavaScript应用程序的静态模块打包器&#xff08;module bundler&#xff09;。当Webpack处理应用程序时&#xff0c;它会在内部构建一个依赖图&#xff08;dependency graph&#xff09;&#xff0c;该图会映射项目所需的每个模块&#xff0c;并生成一个或多…...

华为ensp实现防火墙的区域管理与用户认证

实验环境 基于该总公司内网&#xff0c;实现图片所在要求 后文配置请以本图为准 接口配置与网卡配置 1、创建vlan 2、防火墙g0/0/0与云页面登录 登录admin,密码Admin123&#xff0c;自行更改新密码 更改g0/0/0口ip&#xff0c;敲下命令service-manage all permit 网卡配置…...

深入解析 Laravel 策略路由:提高应用安全性与灵活性的利器

引言 Laravel 是一个功能强大的 PHP Web 应用框架&#xff0c;以其优雅和简洁的语法而受到开发者的喜爱。在 Laravel 中&#xff0c;路由是应用中非常重要的一部分&#xff0c;它负责将用户的请求映射到相应的控制器方法上。Laravel 提供了多种路由方式&#xff0c;其中策略路…...

Java | Leetcode Java题解之第228题汇总区间

题目&#xff1a; 题解&#xff1a; class Solution {public List<String> summaryRanges(int[] nums) {List<String> ans new ArrayList<>();for (int i 0, j, n nums.length; i < n; i j 1) {j i;while (j 1 < n && nums[j 1] num…...

使用Simulink基于模型设计(三):建模并验证系统

可以对系统结构中的每个组件进行建模&#xff0c;以表示该组件的物理行为或功能行为。通过使用测试数据对组件进行仿真&#xff0c;以验证它们的基本行为。 打开系统布局 对各个组件进行建模时&#xff0c;需要从大局上把握整个系统布局。首先加载布局模型。这里以simulink自…...

基于go 1.19的站点模板爬虫

好像就三步: 1 建立http连接 2 解析html内容 3 递归遍历 创建一个基于 Go 1.19 的网站模板爬虫主要涉及几个步骤&#xff0c;包括设置 HTTP 客户端来获取网页内容、解析 HTML 来提取所需的数据&#xff0c;以及处理可能的并发和错误。下面我会给出一个简单的例子来说明如何…...

0基础学会在亚马逊云科技AWS上搭建生成式AI云原生Serverless问答QA机器人(含代码和步骤)

小李哥今天带大家继续学习在国际主流云计算平台亚马逊云科技AWS上开发生成式AI软件应用方案。上一篇文章我们为大家介绍了&#xff0c;如何在亚马逊云科技上利用Amazon SageMaker搭建、部署和测试开源模型Llama 7B。下面我将会带大家探索如何搭建高扩展性、高可用的完全托管云原…...

[PaddlePaddle飞桨] PaddleOCR图像小模型部署

PaddleOCR的GitHub项目地址 推荐环境&#xff1a; PaddlePaddle > 2.1.2 Python > 3.7 CUDA > 10.1 CUDNN > 7.6pip下载指令&#xff1a; python -m pip install paddlepaddle-gpu2.5.1 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install paddleocr2.7…...

C语言 | Leetcode C语言题解之第227题基本计算题II

题目&#xff1a; 题解&#xff1a; int calculate(char* s) {int n strlen(s);int stk[n], top 0;char preSign ;int num 0;for (int i 0; i < n; i) {if (isdigit(s[i])) {num num * 10 (int)(s[i] - 0);}if (!isdigit(s[i]) && s[i] ! || i n - 1) {s…...

kafka.common.KafkaException: Socket server failed to bind to xx:9092

部署分布式集群的时候遇到的错误。 解决方案: 修改config下的server.properties,添加 listenersPLAINTEXT://:9092 advertised.listenersPLAINTEXT://自己的服务器ip:9092 然后重新启动&#xff0c;检查进程是否存在ps -aux | grep kafka。 成功启动。...

【JS+H5+CSS实现烟花特效】

话不多说直接上代码 注意:背景图路径是picture/star.jpg&#xff0c;自己在同级目录先创键picture目录再下载一张图片命名为star.jpg HTML: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vi…...

uniapp小程序使用webview 嵌套 vue 项目

uniapp小程序使用webview 嵌套 vue 项目 小程序中发送 <web-view :src"urlSrc" message"handleMessage"></web-view>export default {data() {return {urlSrc: "",};},onLoad(options) {// 我需要的参数比较多 所以比较臃肿// 获取…...

命令模式在金融业务中的应用及其框架实现

引言 命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,并且支持请求的排队和撤销操作。在金融业务中,命令模式可以用于实现交易请求、撤销操作等功能。本文将介绍命令模式在金融业务中的使用,并探讨…...

WordPress的性能优化有哪些方法?

WordPress的性能优化方法主要包括以下几个方面&#xff1a; 1. 使用缓存插件&#xff1a;缓存插件可以降低服务器负载&#xff0c;提高网站加载速度。常用的缓存插件有WP Rocket、WP Fastest Cache和Cache Enabler等。 2. 代码压缩和整合&#xff1a;通过压缩JavaScript、CSS…...

【Python基础】代码如何打包成exe可执行文件

本文收录于 《一起学Python趣味编程》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、安装PyInstaller三、使用PyInstaller打包四、验证打包是否成功五、总结 一、前言 本文介绍如何…...

Golang | Leetcode Golang题解之第227题基本计算器II

题目&#xff1a; 题解&#xff1a; func calculate(s string) (ans int) {stack : []int{}preSign : num : 0for i, ch : range s {isDigit : 0 < ch && ch < 9if isDigit {num num*10 int(ch-0)}if !isDigit && ch ! || i len(s)-1 {switch preS…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

JVM——对象模型:JVM对象的内部机制和存在方式是怎样的?

引入 在Java的编程宇宙中&#xff0c;“Everything is object”是最核心的哲学纲领。当我们写下new Book()这样简单的代码时&#xff0c;JVM正在幕后构建一个复杂而精妙的“数据实体”——对象。这个看似普通的对象&#xff0c;实则是JVM内存管理、类型系统和多态机制的基石。…...

leetcode238-除自身以外数组的乘积

leetcode 238 思路 可以在不使用除法的情况下&#xff0c;利用前缀积和后缀积来实现解答 前缀积&#xff1a;对每个位置&#xff0c;计算当前数字左侧的所有数字的乘积后缀积&#xff1a;对每个位置&#xff0c;计算当前数字右侧的所有数字的乘积 结合这两种思想&#xff0…...

华为云Flexus+DeepSeek征文|华为云Flexus服务器dify平台通过自然语言转sql并执行实现电商数据分析

目录 前言 1 华为云Flexus服务器部署Dify平台 1.1 华为云Flexus服务器一键部署Dify平台 1.2 设置账号登录Dify&#xff0c;进入平台 2 构建自然语言转SQL并执行的应用 2.1 创建应用并启动工作流设计 2.2 应用框架设计 2.3 自然语言转SQL模块详解 2.4 代码执行模块实现…...

如何实现本地mqtt服务器和云端服务器同步?

有时候&#xff0c;一个物联网项目&#xff0c;A客户想要本地使用&#xff0c;B客户想要线上使用&#xff0c;C客户想要本地部署&#xff0c;当有网环境时能线上使用。这个时候就需要本地MQTT服务和线上MQTT服务能相互自动转发。 后来经我一翻研究&#xff0c;其实Activemq支持…...