less than 1 minute read

Problem Statement

leetcode problem link

Brute Force [Accepted]

class Solution:
    def numberOfBeams(self, bank: List[str]) -> int:
        res = 0
        ROWS = len(bank)
        COLS = len(bank[0])
        map_devices = defaultdict(list)
        for row in range(ROWS):
            for col in range(COLS):
                if bank[row][col] == '1':
                    map_devices[row].append(col)

        prev = 0
        for values in map_devices.values():
            num_of_devices = len(values)
            res += (prev * num_of_devices)
            prev = num_of_devices


        return res

Editorial

Approach: Greedy

class Solution {
public:
    int numberOfBeams(vector<string>& bank) {
        int prev = 0, ans = 0;

        for (string s : bank) {
            int count = 0;
            for (char c : s) {
                if (c == '1') {
                    count++;
                }
            }
            if (count != 0) {
                ans += (prev * count);
                prev = count;
            }
        }

        return ans;
    }
};