原题链接在这里:https://leetcode.com/problems/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:
- The range of width and height of the input 2D array is [1,500].
题解:
Have a row array and column array to track how many B on the corresponding row or column.
Iterate the picture for the 1st time and update row and column.
Iterate the prictrue for the 2nd time to accumlate the count when both r[i] and c[j] == 1.
Time Complexity: O(m*n). m = picture.length. n = picture[0].length.
Space: O(m+n).
AC Java:
1 class Solution {
2 public int findLonelyPixel(char[][] picture) {
3 if(picture == null || picture.length == 0 || picture[0].length == 0){
4 return 0;
5 }
6
7 int m = picture.length;
8 int n = picture[0].length;
9 int [] r = new int[m];
10 int [] c = new int[n];
11 for(int i = 0; i<m; i++){
12 for(int j = 0; j<n; j++){
13 if(picture[i][j] == 'B'){
14 r[i]++;
15 c[j]++;
16 }
17 }
18 }
19
20 int res = 0;
21 for(int i = 0; i<m; i++){
22 for(int j = 0; j<n; j++){
23 if(picture[i][j] == 'B' && r[i] == 1 && c[j] == 1){
24 res++;
25 }
26 }
27 }
28
29 return res;
30 }
31 }