题解 | #疯牛病II#
疯牛病II
https://www.nowcoder.com/practice/2d5c96e452a949e09d98bb32aec3b61d
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pasture int整型vector<vector<>>
* @return int整型
*/
// 广度优先搜索
vector<pair<int,int>> v_p = {{-1,0},{1,0},{0,-1},{0,1}};
int healthyCowsII(vector<vector<int> >& pasture) {
// write code here
int m = pasture.size();
int n = pasture[0].size();
// 遍历至d为空,
deque<pair<int,int>> d;
for(int i=0; i<m; ++i)
{
for(int j=0; j<n; ++j)
{
if(pasture[i][j]==2)
d.emplace_back(make_pair(i,j));
}
}
int ans = -1;
// 注意第0分钟完成了原本pasture中值为2的元素的遍历;
while(!d.empty())
{
++ans;
for(auto [i_1,j_1]:d)
{
for(auto [i_2,j_2]:v_p)
{
int i = i_1+i_2;
int j = j_1+j_2;
if(i>=0 && i<m && j>=0 && j<n && pasture[i][j]==1)
{
pasture[i][j] = 2;
d.emplace_back(make_pair(i,j));
}
}
d.pop_front();
}
}
for(int i=0; i<m; ++i)
{
for(int j=0; j<n; ++j)
{
if(pasture[i][j]==1)
return -1;
}
}
return ans;
}
};
虚数五行区解题中心 文章被收录于专栏
非淡泊无以明志,非宁静无以致远



vivo公司福利 364人发布