本文主要是介绍531. Lonely Pixel I,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
https://leetcode.com/problems/lonely-pixel-i/description/
题目大意:给一个矩形,由字符’W’和’B’组成,w代表空白,b代表像素,找出矩阵中横竖方向都只有它自己一个像素的像素总数.
解题思路:两次遍历矩阵.第一次建立横竖方向的像素数表rows,cols,第二次根据表中数据,若a[i,j]位置为像素,且rows[i], cols[j]都等于1,则该像素符合.
这里用到一个trick,第二次遍历中,内层j循环时,加上对i的限制条件rows[i]>0
可以减少j不必要的遍历.
代码:
class Solution {
public:int findLonelyPixel(vector<vector<char>>& picture) {int m = picture.size(); //行数int 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++) { //遍历每行for (int j = 0; j < n && rows[i] > 0; j++) { //小trick,只遍历rows[i] > 0的列if (picture[i][j] == 'B' && rows[i] == 1 && cols[j] == 1) res++;}}return res;}
};
这篇关于531. Lonely Pixel I的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!