# 2125. Number of Laser Beams in a Bank ## 思路 每次計算到這一列有幾條雷射光 ## 演算法 ``` 1. 計算bank每列有幾個1,放入row中(row[i]代表第i列有row[i]個1) 2. 定義ans = 0, last = 0 3. 掃過row: 3.1. 若row[i]不為0,ans += last * row[i]; last = row[i] 4. 回傳ans ``` ## 程式碼 ```cpp= class Solution { public: int numberOfBeams(vector<string>& bank) { int len = bank.size(); vector <int> row(len); for (int i = 0; i < len; i++) { int cnt = 0; for (int j = 0; j < bank[i].length(); j++) { if (bank[i][j] == '1') cnt++; } row[i] = cnt; } int ans = 0, last = 0; for (int i = 0; i < len; i++) { if (row[i]) { ans += last * row[i]; last = row[i]; } } return ans; } }; ```