LeetCode题解及面试

【LeetCode】1267. Count Servers th

2019-12-02  本文已影响0人  LeetPub

题意

给定一个m*n的数组,数组中元素取值0或1,其中1表示该位置有服务器,0表示该位置无服务器。

解法

题目比较绕,直白点就是找出满足条件除自身为1其所在行和所在列都为0的所有元素;


最简单做法是统计每行1的个数和每列1的个数,然后扫描表中每个元素,如果该元素所在的行或列1的个数大于1,则认为服务器之间可以通信;

代码

class Solution {
public:
    int countServers(vector<vector<int>>& grid) {
        int m = grid.size(), n = grid[0].size(), sum = 0;
        vector<int> row(m), col(n);
        for (size_t i = 0; i < m; ++ i) {
            for (size_t j = 0; j < n; ++ j) {
                row[i] += grid[i][j];
                col[j] += grid[i][j];
            }
        }
        for (size_t i = 0; i < m; ++ i) {
            for (size_t j = 0; j < n; ++ j) {
                if (grid[i][j] == 1 && (row[i] > 1 || col[j] > 1)) {
                    ++ sum;
                }
            }
        }
        return sum;
    }
};
上一篇下一篇

猜你喜欢

热点阅读