Welcome to Subscribe On Youtube

531. Lonely Pixel I

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:

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:

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

  • 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;
        }
    }
    
  • 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;
        }
    };
    
  • 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
    
    
  • 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
    }
    
  • function findLonelyPixel(picture: string[][]): number {
        const m = picture.length;
        const n = picture[0].length;
        const rows: number[] = Array(m).fill(0);
        const cols: number[] = Array(n).fill(0);
        for (let i = 0; i < m; ++i) {
            for (let j = 0; j < n; ++j) {
                if (picture[i][j] === 'B') {
                    ++rows[i];
                    ++cols[j];
                }
            }
        }
        let ans = 0;
        for (let i = 0; i < m; ++i) {
            for (let j = 0; j < n; ++j) {
                if (picture[i][j] === 'B' && rows[i] === 1 && cols[j] === 1) {
                    ++ans;
                }
            }
        }
        return ans;
    }
    
    

All Problems

All Solutions