Leetcode解题: Lonely Pixel (531)

Given a picture consisting of black and white pixels, find the number of black lonely pixels.

The picture is represented by a 2D char array consisting of ‘B’ and ‘W’, which means black and white pixels respectively.

A black lonely pixel is character ‘B’ that located at a specific position where the same row and same column don’t have any other black pixels.

Example:

1
2
3
4
5
6
7
Input:
[['W', 'W', 'B'],
['W', 'B', 'W'],
['B', 'W', 'W']]
Output: 3
Explanation: All the three 'B's are black lonely pixels.

Note:
The range of width and height of the input 2D array is [1,500].

解法1:O(MN) Time + O(M + N) Space

用两个数组分别记录每一行, 每一列的pixel的个数,然后遍历一遍矩阵,对于每一个B的位置查看当前行列的B的个数。
Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Solution {
public int findLonelyPixel(char[][] picture) {
if (picture.length == 0 || picture[0].length == 0) {
return 0;
}
int n = picture.length;
int m = picture[0].length;
int[] row = new int[n];
int[] col = new int[m];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (picture[i][j] == 'B') {
row[i]++;
col[j]++;
}
}
}
int count = 0;
for (int i = 0; i < n;++i) {
for (int j = 0; j < m; ++j) {
if (picture[i][j] == 'B') {
if (row[i] == 1 && col[j] == 1) {
++count;
}
}
}
}
return count;
}
}