Leetcode 1267. 统计参与通信的服务器

1267. 统计参与通信的服务器

Ideas

用一行和一列去记录出现的个数,最后遍历全部元素统计一下

C++

class Solution {
public:
    int countServers(vector<vector<int>>& grid) {
        int m = grid.size();
        int n = grid[0].size();
        vector<int> count_m(m), count_n(n);
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                if (grid[i][j] == 1) {
                    ++count_m[i];
                    ++count_n[j];
                }
            }
        }
        int ans = 0;
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                if (grid[i][j] == 1 && (count_m[i] > 1 || count_n[j] > 1)) {
                    ++ans;
                }
            }
        }
        return ans;
    }
};

Python

嗯…我自己的思路有点笨,就是用一行去记录每列1的个数,然后每行的个数如果大于二就count加进去

class Solution:
    def countServers(self, grid: List[List[int]]) -> int:
        m, n = len(grid), len(grid[0])
        grid.append([0 for _ in range(n)])
        re = 0
        for mm in range(m):
            for nn in range(n):
                if grid[mm][nn]:
                    # print(grid)
                    grid[m][nn] += 1
            if grid[mm].count(1) >= 2:
                re += grid[mm].count(1)
                for nn in range(n):
                    grid[mm][nn] = 0
        for nn in range(n):
            if grid[m][nn] >= 2:
                for mm in range(m):
                    re += grid[mm][nn]
        return re            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值