Description#
Given an m x n
picture
consisting of black 'B'
and white 'W'
pixels, return the number of black lonely pixels.
A black lonely pixel is a character 'B'
that located at a specific position where the same row and same column don't have any other black pixels.
Example 1:
![](https://spcdn.pages.dev/leetcode/problems/0531.Lonely%20Pixel%20I/images/pixel1.jpg)
Input: picture = [["W","W","B"],["W","B","W"],["B","W","W"]]
Output: 3
Explanation: All the three 'B's are black lonely pixels.
Example 2:
![](https://spcdn.pages.dev/leetcode/problems/0531.Lonely%20Pixel%20I/images/pixel2.jpg)
Input: picture = [["B","B","B"],["B","B","W"],["B","B","B"]]
Output: 0
Constraints:
m == picture.length
n == picture[i].length
1 <= m, n <= 500
picture[i][j]
is 'W'
or 'B'
.
Solutions#
Solution 1#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| class Solution:
def findLonelyPixel(self, picture: List[List[str]]) -> int:
m, n = len(picture), len(picture[0])
rows, cols = [0] * m, [0] * n
for i in range(m):
for j in range(n):
if picture[i][j] == 'B':
rows[i] += 1
cols[j] += 1
res = 0
for i in range(m):
if rows[i] == 1:
for j in range(n):
if picture[i][j] == 'B' and cols[j] == 1:
res += 1
break
return res
|
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
| class Solution {
public int findLonelyPixel(char[][] picture) {
int m = picture.length, n = picture[0].length;
int[] rows = new int[m];
int[] cols = new int[n];
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
if (picture[i][j] == 'B') {
++rows[i];
++cols[j];
}
}
}
int res = 0;
for (int i = 0; i < m; ++i) {
if (rows[i] == 1) {
for (int j = 0; j < n; ++j) {
if (picture[i][j] == 'B' && cols[j] == 1) {
++res;
break;
}
}
}
}
return res;
}
}
|
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
| class Solution {
public:
int findLonelyPixel(vector<vector<char>>& picture) {
int m = picture.size(), n = picture[0].size();
vector<int> rows(m);
vector<int> cols(n);
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
if (picture[i][j] == 'B') {
++rows[i];
++cols[j];
}
}
}
int res = 0;
for (int i = 0; i < m; ++i) {
if (rows[i] == 1) {
for (int j = 0; j < n; ++j) {
if (picture[i][j] == 'B' && cols[j] == 1) {
++res;
break;
}
}
}
}
return res;
}
};
|
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
| func findLonelyPixel(picture [][]byte) int {
m, n := len(picture), len(picture[0])
rows := make([]int, m)
cols := make([]int, n)
for i := 0; i < m; i++ {
for j := 0; j < n; j++ {
if picture[i][j] == 'B' {
rows[i]++
cols[j]++
}
}
}
res := 0
for i := 0; i < m; i++ {
if rows[i] == 1 {
for j := 0; j < n; j++ {
if picture[i][j] == 'B' && cols[j] == 1 {
res++
break
}
}
}
}
return res
}
|