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;
}
};