AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

LeetCode 1034. 边界着色    原题链接    简单

作者: 作者的头像   剩余99仙气 ,  2023-12-01 17:27:30 ,  所有人可见 ,  阅读 66


1


(搜索)

找到[row, col]对应的连通分量,搜索的时候判断该点是否属于边界点,是的话修改值

C++ 代码

class Solution {
public:
    vector<vector<int>> colorBorder(vector<vector<int>>& grid, int row, int col, int color) {
        int n = grid.size(), m = grid[0].size();
        vector<vector<int>> g = grid;
        int c = grid[row][col];
        typedef pair<int, int> PII;
        bool st[60][60];
        PII q[60 * 60];
        memset(st, 0, sizeof st);

        int hh = 0, tt = 0;
        q[0] = {row, col};
        st[row][col] = true;

        int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};

        while(hh <= tt)
        {
            auto t = q[hh++];
            for(int i = 0; i < 4; i++)
            {
                int x = t.first + dx[i], y = t.second + dy[i];
                // 找到连通分量的边界点
                if(!(x >= 0 && x < n && y >= 0 && y < m && grid[x][y] == c)) g[t.first][t.second] = color;
                else if(!st[x][y])
                {
                    st[x][y] = true;
                    q[++tt] = {x, y};
                }
            }
        }
        return g;
    }
};

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息