题目描述:
给定一幅黑白像素组成的图像, 计算黑色孤独像素的数量。
图像由一个由‘B’和‘W’组成二维字符数组表示, ‘B’和‘W’分别代表黑色像素和白色像素。
黑色孤独像素指的是在同一行和同一列不存在其他黑色像素的黑色像素。
示例:
输入:
[[‘W’, ‘W’, ‘B’],
[‘W’, ‘B’, ‘W’],
[‘B’, ‘W’, ‘W’]]
输出: 3
解析: 全部三个’B’都是黑色孤独像素。
注意:
输入二维数组行和列的范围是 [1,500]。
方法1:
主要思路:
(1)先使用行和列来统计各行各列具有的B的数量;
(2)再遍历一次数组,只有数组元素为B,且对应的行和列的值为1时,说明是孤独像素;
class Solution {
public:
int findLonelyPixel(vector<vector<char>>& picture) {
vector<int> rows(picture.size(),0);
vector<int> cols(picture[0].size(),0);
//先统计各行和各列中的B的数量
for(int i=0;i<picture.size();++i){
for(int j=0;j<picture[0].size();++j){
if(picture[i][j]=='B'){
++rows[i];
++cols[j];
}
}
}
int res=0;
//再遍历一遍,进行统计
for(int i=0;i<picture.size();++i){
for(int j=0;j<picture[0].size();++j){
//只有元素的值为B,其各行和各列的值为1,才说明是孤独像素
if(picture[i][j]=='B'&&rows[i]==1&&cols[j]==1){
++res;
}
}
}
return res;
}
};