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

超低价的郑州网站建设广告设计接单

超低价的郑州网站建设,广告设计接单,深圳优秀网页设计,工程建设网站导航图图论 图论部分推荐 acm 模式,因为图的输入处理不一样 DFS,类似二叉树的递归遍历 BFS,类似二叉树的层次遍历 208. 实现 Trie (前缀树) 数据结构大概如下: 可以看成是 二十六叉树 (因为26个小写字母) …

图论

图论部分推荐 acm 模式,因为图的输入处理不一样

DFS,类似二叉树的递归遍历
BFS,类似二叉树的层次遍历

208. 实现 Trie (前缀树)

数据结构大概如下:

  • 可以看成是 二十六叉树 (因为26个小写字母)
    在这里插入图片描述
class Node:def __init__(self):self.son = {}self.end = False  # end=True, 表示当前结点已经构成一个单词class Trie:def __init__(self):self.root = Node()def insert(self, word: str) -> None:cur = self.rootfor c in word:if c not in cur.son:cur.son[c] = Node()cur = cur.son[c]cur.end = Truedef find(self, word: str) -> int:cur = self.rootfor c in word:if c not in cur.son:return 0cur = cur.son[c]return 2 if cur.end else 1def search(self, word: str) -> bool:return self.find(word) == 2def startsWith(self, prefix: str) -> bool:return self.find(prefix) != 0

DFS

(1)200. 岛屿数量

方法一:DFS

class Solution:def numIslands(self, grid: List[List[str]]) -> int:dx = [0,-1,0,1]dy = [-1,0,1,0]def dfs(i, j):if (not 0 <= i < m) or (not 0 <= j < n) or grid[i][j] == '0':returngrid[i][j] = '0'for idx in range(4):x = i + dx[idx]y = j + dy[idx]dfs(x,y)m = len(grid)n = len(grid[0])ans = 0 for i in range(m):for j in range(n):if grid[i][j] == "1":dfs(i,j)  # 把整个岛都标记ans += 1return ans

ACM 代码模式:99. 岛屿数量
在这里插入图片描述

读取每一行输入map(int, input().split())

  • input().split(),将输入的行,按照空格切分每个元素,返回一个list
  • map(int, input().split()),将 list 中每个元素转化为指定的 int类型,返回一个可迭代的对象

例如输入1 2 3 4

  • input().split(),得到[‘1’, ‘2’, ‘3’, ‘4’]
  • list(map(int, input().split())),[1, 2, 3, 4]
dx = [-1,0,1,0]
dy = [0,-1,0,1]def dfs(i, j):if not (0<=i<n) or not (0<=j<m) or grid[i][j]==0:return grid[i][j] = 0for idx in range(4):x = dx[idx] + iy = dy[idx] + jdfs(x, y)if __name__ == '__main__':n,m = map(int, input().split())grid = []for i in range(n):grid.append(list(map(int, input().split())))# visited = [ [False] * m for _ in range(n) ]ans = 0for i in range(n):for j in range(m):if grid[i][j] == 1:dfs(i, j)ans += 1print(ans)

(2)100. 岛屿的最大面积

在这里插入图片描述

dx = [-1, 0, 1, 0]
dy = [0, -1, 0, 1]
s = 0def dfs(i, j):if not (0 <= i < n) or not (0 <= j < m) or grid[i][j] == 0:returnglobal ss += 1grid[i][j] = 0for idx in range(4):x = dx[idx] + iy = dy[idx] + jdfs(x, y)if __name__ == '__main__':n, m = map(int, input().split())grid = []for i in range(n):grid.append(list(map(int, input().split())))ans = 0for i in range(n):for j in range(m):if grid[i][j] == 1:s = 0dfs(i, j)ans = max(ans, s)print(ans)

(3)101. 孤岛的总面积

在这里插入图片描述
在这里插入图片描述

步骤

  • 首先把四周靠边界的岛屿都设为 0
  • 然后遍历剩余的孤岛面积
dx = [-1,0,1,0]
dy = [0,-1,0,1]
s = 0def dfs(i,j):if not (0<=i<n) or not (0<=j<m) or grid[i][j] == 0:returnglobal ss += 1grid[i][j] = 0for idx in range(4):x = dx[idx] + iy = dy[idx] + jdfs(x,y)if __name__ == '__main__':n, m = map(int, input().split())grid = []for i in range(n):grid.append(list(map(int, input().split())))# 将四周贴边的非孤岛区域转为水# 遍历第一列和最后一列for i in range(n):if grid[i][0] == 1:dfs(i,0)elif grid[i][m-1] == 1:dfs(i,m-1)# 遍历第一行和最后一行for j in range(m):if grid[0][j] == 1:dfs(0,j)elif grid[n-1][j] == 1:dfs(n-1,j)# 计算孤岛面积s = 0for i in range(n):for j in range(m):if grid[i][j] == 1:dfs(i,j)print(s)

(4)102. 沉没孤岛

在这里插入图片描述

  1. 把靠四周的非孤岛标记为2
  2. 接着把剩余的1(孤岛),标记为0
  3. 最后把2修改回1
dx = [-1,0,1,0]
dy = [0,-1,0,1]def dfs(i,j):if not (0 <= i < n) or not(0 <= j < m) or grid[i][j] != 1:return grid[i][j] = 2for k in range(4):x = dx[k] + iy = dy[k] + jdfs(x,y)if __name__ == '__main__':n,m = map(int, input().split())grid = []for _ in range(n):grid.append(list(map(int, input().split())))for i in range(n):if grid[i][0] == 1:dfs(i, 0)if grid[i][m-1] == 1:dfs(i, m-1)for j in range(m):if grid[0][j] == 1:dfs(0,j)if grid[n-1][j] == 1:dfs(n-1, j)for i in range(n):for j in range(m):if grid[i][j] == 1:grid[i][j] = 0elif grid[i][j] == 2:grid[i][j] = 1print(' '.join(map(str, grid[i])))

BFS

(1)994. 腐烂的橘子

使用 BFS 是为了实现,同一个时间,当前所有腐烂的橘子同时腐烂周围

from collections import deque
class Solution:def orangesRotting(self, grid: List[List[int]]) -> int:n, m = len(grid), len(grid[0])q = deque()count = 0  # 新鲜橘子数for i in range(n):for j in range(m):if grid[i][j] == 1:count += 1elif grid[i][j] == 2:q.append((i,j))dx = [-1,0,1,0]dy = [0,-1,0,1]round = 0  # 分钟数while count > 0 and len(q) > 0:round += 1cur = len(q)  # 这一轮有多少个腐烂的橘子一起腐烂周围for _ in range(cur):i,j = q.popleft()for idx in range(4):x = dx[idx] + iy = dy[idx] + jif (0<=x<n) and (0<=y<m) and grid[x][y] == 1:grid[x][y] = 2count -= 1q.append((x,y))if count > 0:return -1else:return round

(2)207. 课程表

在这里插入图片描述

  1. 每次只能修当前可以修的课程——入度为0的课程
  2. 修完一轮后,再修可以休的课程——入度变为0的课程
  3. 所以我们需要记录每个课程的入度,
  4. 然后需要邻接矩阵来关联课程之间的关系,从而更新入度
    在这里插入图片描述
from collections import deque
class Solution:def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:indegree = [0] * numCourses  # 每个课程的入度(即先修课程有几门)adj = defaultdict(list) # key为当前课,value为它的后续课程,用列表存# 初始化入度和邻接表for cur,pre in prerequisites:indegree[cur] += 1adj[pre].append(cur)# 把入度为0的入队列q = deque()for i in range(numCourses):if indegree[i] == 0:q.append(i)while q:n = len(q)for i in range(n):pre = q.popleft()numCourses -= 1# 遍历课程pre的邻接表:它的后续课程for cur in adj[pre]:# 将后续课程的入度 -1indegree[cur] -= 1if indegree[cur] == 0:q.append(cur)return numCourses == 0

文章转载自:

http://0vh4mMEy.rzpkt.cn
http://QD0YV33T.rzpkt.cn
http://iZ7hSqwb.rzpkt.cn
http://GXCPctNz.rzpkt.cn
http://DwWHyHMp.rzpkt.cn
http://oo18gPoC.rzpkt.cn
http://gIdzbTTW.rzpkt.cn
http://HnGDTAbR.rzpkt.cn
http://nha6gvV0.rzpkt.cn
http://klBGqUVv.rzpkt.cn
http://OvNmvWLY.rzpkt.cn
http://rcxvxcGg.rzpkt.cn
http://frOayABS.rzpkt.cn
http://IcGf5PeU.rzpkt.cn
http://NSznTrZh.rzpkt.cn
http://qxhrnWB2.rzpkt.cn
http://kZWSpg5U.rzpkt.cn
http://R11Kdi2N.rzpkt.cn
http://cBC75Ijj.rzpkt.cn
http://EbyTMD1f.rzpkt.cn
http://CNSQyjeA.rzpkt.cn
http://f3Kfjt2e.rzpkt.cn
http://FoHJVQnb.rzpkt.cn
http://8lLQmodd.rzpkt.cn
http://4Xkqivtc.rzpkt.cn
http://PHLzHR4g.rzpkt.cn
http://56LyVzwo.rzpkt.cn
http://6CgvqZIw.rzpkt.cn
http://a2BvIOsY.rzpkt.cn
http://L9Z3oOIG.rzpkt.cn
http://www.dtcms.com/wzjs/625631.html

相关文章:

  • 网站规划与建设 ppt建网站要定制还是第三方系统
  • 哪里可以做免费网站做兼职写小说网站
  • 360做网站的建筑模板怎么装
  • 网站建设 今晟网络远程教育网站建设
  • 阿里云做网站视频无法播放大朗做网站在
  • 乐都区公司网站建设网站开发技术前景最好
  • 深圳做app开发学习网站建设优化
  • 论mvc框架在网站开发的应用账号交易网站数据库应该怎么做
  • 男女做羞羞的事情网站太原百度做网站多少钱
  • 网站建设公司怎么写宣传语做网站要用什么语言
  • 教育网站建设的雷区wordpress数据恢复
  • 启东做网站建设一个类似于京东的网站
  • 北京到邢台湘乡网站seo
  • 模块网站和定制网站区别wordpress通过小工具添加百度统计
  • 做网站一个月30ip校园网站建设目的
  • 织梦医院网站源码怎么用云服务器建设网站
  • 西安营销型网站建设动力无限免费建设网站
  • 建设网站目的是什么电商网站建设费用预算
  • 网站运营面试网络优化网站建设学习
  • 优异网站做一款网站注意啥
  • 太仓苏州网站建设学校网站源码免费
  • 如何网站备案常德城乡和住房建设局网站
  • 网站空间年费地推团队去哪里找
  • 拖拽做网站临沂做商城网站
  • 网站开发要怎么看一个网站好坏
  • 河南建筑公司网站免费游戏代理平台有哪些
  • 湖北城乡住房建设厅网站怎查证件莞城最新通告
  • 营销型网站建设ppt模板下载网站建设与运营 教材 崔
  • 套别人代码做网站原画外包网
  • 网站建设找嘉艺网络创建网站要钱吗