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

免费云建站wordpress导入火车头

免费云建站,wordpress导入火车头,给我一个可以看片的免费,宁德市区哪里好玩Flood Fill 算法是一种用于填充连通区域的算法,常用于图像处理、绘图工具中的“油漆桶”工具,以及解决迷宫、岛屿问题等。它的核心思想是从一个起始点开始,向四周扩散,填充所有符合条件的区域。 算法思想: 起始点&am…

Flood Fill 算法是一种用于填充连通区域的算法,常用于图像处理、绘图工具中的“油漆桶”工具,以及解决迷宫、岛屿问题等。它的核心思想是从一个起始点开始,向四周扩散,填充所有符合条件的区域。

算法思想

  1. 起始点:选择一个起始点(通常是某个像素或网格单元)。
  2. 填充条件:定义填充的条件(例如,填充与起始点颜色相同或满足某种属性的区域)。
  3. 扩散方式:从起始点开始,向四周(上下左右或更多方向)递归或迭代地填充符合条件的区域。

实现方式

  1. 深度优先搜索(DFS)
    • 使用递归或栈实现。
    • 从起始点开始,向四周扩散,直到所有符合条件的区域都被填充。
    • 适合小规模数据,但递归深度过大时可能导致栈溢出。
  2. 广度优先搜索(BFS)
    • 使用队列实现。
    • 从起始点开始,按层次向四周扩散。
    • 适合大规模数据,不会出现栈溢出问题。

简单

733. 图像渲染

有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。你也被给予三个整数 sr , sccolor 。你应该从像素 image[sr][sc] 开始对图像进行上色 填充

为了完成 上色工作

  1. 从初始像素开始,将其颜色改为 color
  2. 对初始坐标的 上下左右四个方向上 相邻且与初始像素的原始颜色同色的像素点执行相同操作。
  3. 通过检查与初始像素的原始颜色相同的相邻像素并修改其颜色来继续 重复 此过程。
  4. 没有 其它原始颜色的相邻像素时 停止 操作。

最后返回经过上色渲染 修改 后的图像 。

示例 1:

img

**输入:**image = [[1,1,1],[1,1,0],[1,0,1]],sr = 1, sc = 1, color = 2

输出:[[2,2,2],[2,2,0],[2,0,1]]

**解释:**在图像的正中间,坐标 (sr,sc)=(1,1) (即红色像素),在路径上所有符合条件的像素点的颜色都被更改成相同的新颜色(即蓝色像素)。

注意,右下角的像素 没有 更改为2,因为它不是在上下左右四个方向上与初始点相连的像素点。

示例 2:

**输入:**image = [[0,0,0],[0,0,0]], sr = 0, sc = 0, color = 0

输出:[[0,0,0],[0,0,0]]

**解释:**初始像素已经用 0 着色,这与目标颜色相同。因此,不会对图像进行任何更改。

提示:

  • m == image.length
  • n == image[i].length
  • 1 <= m, n <= 50
  • 0 <= image[i][j], color < 2^16
  • 0 <= sr < m
  • 0 <= sc < n
const int dx[4] = {1, -1, 0, 0};
const int dy[4] = {0, 0, 1, -1};vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {int old_color = image[sr][sc];if (old_color == color) {return image;}int m = image.size(), n = image[0].size();queue<pair<int, int>> que;que.emplace(sr, sc);image[sr][sc] = color;while (!que.empty()) {auto [x, y] = que.front();que.pop();for (int i = 0; i < 4; ++i) {int nx = x + dx[i], ny = y + dy[i];if (nx >= 0 && nx < m && ny >= 0 && ny < n && image[nx][ny] == old_color) {image[nx][ny] = color;que.emplace(nx, ny);}}}return image;
}

中等

130. 被围绕的区域

给你一个 m x n 的矩阵 board ,由若干字符 'X''O' 组成,捕获 所有 被围绕的区域

  • **连接:**一个单元格与水平或垂直方向上相邻的单元格连接。
  • 区域:连接所有 'O' 的单元格来形成一个区域。
  • **围绕:**如果您可以用 'X' 单元格 连接这个区域,并且区域中没有任何单元格位于 board 边缘,则该区域被 'X' 单元格围绕。

通过 原地 将输入矩阵中的所有 'O' 替换为 'X'捕获被围绕的区域。你不需要返回任何值。

示例 1:

**输入:**board = [[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”,“X”,“O”,“X”],[“X”,“O”,“X”,“X”]]

输出:[[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“O”,“X”,“X”]]

解释:

img

在上图中,底部的区域没有被捕获,因为它在 board 的边缘并且不能被围绕。

示例 2:

**输入:**board = [[“X”]]

输出:[[“X”]]

提示:

  • m == board.length
  • n == board[i].length
  • 1 <= m, n <= 200
  • board[i][j]'X''O'

从矩形四周遍历,如果是字符'O',则将它标记为'F',后续进行BFS遍历所有未被包围的字符'O',最后再将被标记的字符'F'还原为字符'O',未被标记的字符'O'改为字符'X'

const int dx[4] = {0, 0, 1, -1};
const int dy[4] = {1, -1, 0, 0};void solve(vector<vector<char>>& board) {int m = board.size(), n = board[0].size();queue<pair<int, int>> que;for (int i = 0; i < m; ++i) {if (board[i][0] == 'O') {que.emplace(i, 0);board[i][0] = 'F';}if (board[i][n - 1] == 'O') {que.emplace(i, n - 1);board[i][n - 1] = 'F';}}for (int i = 1; i < n - 1; ++i) {if (board[0][i] == 'O') {que.emplace(0, i);board[0][i] = 'F';}if (board[m - 1][i] == 'O') {que.emplace(m - 1, i);board[m - 1][i] = 'F';}}while (!que.empty()) {auto [x, y] = que.front();que.pop();for (int k = 0; k < 4; ++k) {int nx = x + dx[k], ny = y + dy[k];if (nx >= 0 && nx < m && ny >= 0 && ny < n && board[nx][ny] == 'O') {que.emplace(nx, ny);board[nx][ny] = 'F';}}}for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {if (board[i][j] == 'F') {board[i][j] = 'O';} else if (board[i][j] == 'O') {board[i][j] = 'X';}}}
}

200. 岛屿数量

给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

示例 1:

输入:grid = [["1","1","1","1","0"],["1","1","0","1","0"],["1","1","0","0","0"],["0","0","0","0","0"]
]
输出:1

示例 2:

输入:grid = [["1","1","0","0","0"],["1","1","0","0","0"],["0","0","1","0","0"],["0","0","0","1","1"]
]
输出:3

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 300
  • grid[i][j] 的值为 '0''1'

for循环遍历数组,每遇到一个字符'1',通过BFS遍历上下左右所有的字符'1',标记为已遍历,并且ans++

通过将访问过的陆地标记为 '0',可以避免额外的 visited 数组。

const int dx[4] = {1, -1, 0, 0};
const int dy[4] = {0, 0, 1, -1};int numIslands(vector<vector<char>>& grid) {int m = grid.size(), n = grid[0].size();queue<pair<int, int>> que;int ans = 0;for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {if (grid[i][j] == '1') {ans++;que.emplace(i, j);grid[i][j] = '0';while (!que.empty()) {auto [x, y] = que.front();que.pop();for (int k = 0; k < 4; ++k) {int nx = x + dx[k], ny = y + dy[k];if (nx >= 0 && nx < m && ny >= 0 && ny < n && grid[nx][ny] == '1') {grid[nx][ny] = '0'; // 立即修改,否则可能会导致重复入队que.emplace(nx, ny);}}}}}}return ans;
}

695. 岛屿的最大面积

给你一个大小为 m x n 的二进制矩阵 grid

岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。

岛屿的面积是岛上值为 1 的单元格的数目。

计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0

示例 1:

img

输入:grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
输出:6
解释:答案不应该是 11 ,因为岛屿只能包含水平或垂直这四个方向上的 1 。

示例 2:

输入:grid = [[0,0,0,0,0,0,0,0]]
输出:0

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 50
  • grid[i][j]01

与这题类似200. 岛屿数量,只不过每次统计一下岛屿的大小并保留最大值。

const int dx[4] = {0, 0, 1, -1};
const int dy[4] = {1, -1, 0, 0};int maxAreaOfIsland(vector<vector<int>>& grid) {int m = grid.size(), n = grid[0].size();queue<pair<int, int>> que;int ans = 0;for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {if (grid[i][j] == 1) {que.emplace(i, j);grid[i][j] = 0;int cnt = 0;while (!que.empty()) {cnt++;auto [x, y] = que.front();que.pop();for (int k = 0; k < 4; ++k) {int nx = x + dx[k], ny = y + dy[k];if (nx >= 0 && nx < m && ny >= 0 && ny < n && grid[nx][ny] == 1) {que.emplace(nx, ny);grid[nx][ny] = 0;}}}ans = max(ans, cnt);}}}return ans;
}
http://www.dtcms.com/wzjs/541995.html

相关文章:

  • 哈尔滨可以做网站的公司网页编辑文档
  • 网站建设技术服务计入什么科目网站建设拍金手指排名贰贰
  • 大连里程科技做网站网站建设合同应注意
  • 制作论坛做网站山东城市建设职业学院教务网网站
  • 建立网站备案需要什么资料在虚拟主机上建设多个网站
  • 设计网站推荐知乎自建网站代理服务器
  • 那些网站可以做淘宝店铺推广电子商务师证报考官网
  • 一站式服务工作总结网站服务器有哪些类型有哪些类型有哪些类型有哪些类型有哪些
  • 网站有了如何做推广小程序推广app
  • 济南网站搜索排名铜陵高端网站建设
  • 外贸展示型模板网站tikiwiki 与Wordpress
  • js网站统计源码资源下载站
  • 厦门网站建设那家好网站评论怎么做的
  • 网站建设次年续费合同找人做个网站建设制作报价方案
  • 备案价网站台州网页设计招聘
  • 健康网站可以做推广吗专业建站公司提供详细的功能描述及报价
  • 做游戏人设计网站字体设计分析
  • 医院网站建设标书.net 门户网站
  • 国外网站建设现状erp系统华为
  • 制作网站要花多少钱网页设计与制作案例教程第二版
  • 网站 建设设计方案重庆今天刚刚发生的新闻
  • 瓷砖网站建设做网站推广的优势
  • 白云定制型网站建设网络黄页进入有限公司
  • 工程行业招聘网站科技有限公司和商贸有限公司区别
  • 最好的公文写作网站人工智能建筑设计软件
  • 外贸网站推广计划书wordpress上传视频黑屏
  • 网站优化设计公司软件开发定制价格表
  • 网站运营与管理的一个目的网站建设交易中心
  • wordpress实现网站的登陆功能东庄水利建设公司网站
  • 企业网站一般做多宽网络工程专业毕业生设计