# 531 Lonely Pixel I

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:**

```
Input:

[['W', 'W', 'B'],
 ['W', 'B', 'W'],
 ['B', 'W', 'W']]


Output:
 3

Explanation:
 All the three 'B's are black lonely pixels.
```

**Note:**

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

**The Idea:** In the first run through the picture, collect the number of black pixels on each row and column. Then on the second run, verify every black pixel to have a count of 1 in both it's respected row and column.

**Complexity:** O(n+m) time and space with `n = row count` and `m = col count`

```cpp
int findLonelyPixel(vector<vector<char>>& picture) {

    if (picture.empty()) return 0;

    const size_t rows = picture.size();
    const size_t cols = picture.at(0).size();
    vector<int> rowsWithB(rows);
    vector<int> colsWithB(cols);

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            if (picture[i][j] == 'B') {
                rowsWithB[i]++; colsWithB[j]++;
            }
        }
    }

    int count = 0;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            if (picture[i][j] == 'B' && rowsWithB[i] == 1 && colsWithB[j] == 1) {
                count++;
            }
        }
    }

    return count;
}
```
