题解 | #疯牛病I#

疯牛病I

https://www.nowcoder.com/practice/2066902a557647ce8e85c9d2d5874086

考察知识点:广度优先搜索

题目分析:

可以通过队列进行广度优先搜索。每一次将病了的牛旁边健康的牛染病,并加入到队列中。每一分钟都是看当下队列中的所有牛,新加入的牛需要到下一分钟才访问,可以通过每次查询队列的size来控制。

在每一次将病了的牛旁边健康的牛染病时,可以通过数组 int dx[4] = {1, 0, -1, 0};和 int dy[4] = {0, 1, 0, -1};来遍历四个方向,看这四个方向中哪一个方向是健康的牛,再将其染病。

所用编程语言:C++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pasture int整型vector<vector<>> 
     * @param k int整型 
     * @return int整型
     */
    int healthyCows(vector<vector<int> >& pasture, int k) {
        // write code here
        int m = pasture.size();
        int n = pasture[0].size();
        int res = 0;

        queue<pair<int , int>> illcows;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (pasture[i][j] == 2) 
                    illcows.push({i, j});
                else if (pasture[i][j] == 1) 
                    res++;
            }
        }

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

        while (k > 0) {
            int size = illcows.size();
            while (size) {
                size--;
                pair<int, int> illcow = illcows.front();
                illcows.pop();
                int row = illcow.first;
                int col = illcow.second;
                for (int i = 0; i < 4; i++) {
                    int irow = row + dx[i];
                    int icol = col + dy[i];
                    if (irow >= 0 && irow < m && icol >= 0 && icol < n && pasture[irow][icol] == 1) {
                        pasture[irow][icol] = 2;
                        res--;
                        illcows.push({irow, icol});
                    }
                }
            }
            k--;
        }
        return res;
    }
};

全部评论

相关推荐

03-29 15:34
门头沟学院 Java
北斗导航Compass低仿版:能不能先搞清楚优先级啊,怎么可能是项目问题,项目很重要吗?又没学历 又没实习大厂凭啥约面?那玩具项目 没应用在真实生产环境下的 就算做上天又有什么用?早点找个小公司实习 拿小公司实习去投大厂实习,这才是你现在该做的
投递美团等公司8个岗位 简历被挂麻了,求建议
点赞 评论 收藏
分享
ming_ri:“很抱歉,您的简历和我们当前的职位需求不是很匹配”
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务