|
| 1 | +<h2><a href="https://leetcode.com/problems/number-of-laser-beams-in-a-bank/?envType=daily-question&envId=2025-10-27">2244. Number of Laser Beams in a Bank</a></h2><h3>Medium</h3><hr><p>Anti-theft security devices are activated inside a bank. You are given a <strong>0-indexed</strong> binary string array <code>bank</code> representing the floor plan of the bank, which is an <code>m x n</code> 2D matrix. <code>bank[i]</code> represents the <code>i<sup>th</sup></code> row, consisting of <code>'0'</code>s and <code>'1'</code>s. <code>'0'</code> means the cell is empty, while<code>'1'</code> means the cell has a security device.</p> |
| 2 | + |
| 3 | +<p>There is <strong>one</strong> laser beam between any <strong>two</strong> security devices <strong>if both</strong> conditions are met:</p> |
| 4 | + |
| 5 | +<ul> |
| 6 | + <li>The two devices are located on two <strong>different rows</strong>: <code>r<sub>1</sub></code> and <code>r<sub>2</sub></code>, where <code>r<sub>1</sub> < r<sub>2</sub></code>.</li> |
| 7 | + <li>For <strong>each</strong> row <code>i</code> where <code>r<sub>1</sub> < i < r<sub>2</sub></code>, there are <strong>no security devices</strong> in the <code>i<sup>th</sup></code> row.</li> |
| 8 | +</ul> |
| 9 | + |
| 10 | +<p>Laser beams are independent, i.e., one beam does not interfere nor join with another.</p> |
| 11 | + |
| 12 | +<p>Return <em>the total number of laser beams in the bank</em>.</p> |
| 13 | + |
| 14 | +<p> </p> |
| 15 | +<p><strong class="example">Example 1:</strong></p> |
| 16 | +<img alt="" src="https://assets.leetcode.com/uploads/2021/12/24/laser1.jpg" style="width: 400px; height: 368px;" /> |
| 17 | +<pre> |
| 18 | +<strong>Input:</strong> bank = ["011001","000000","010100","001000"] |
| 19 | +<strong>Output:</strong> 8 |
| 20 | +<strong>Explanation:</strong> Between each of the following device pairs, there is one beam. In total, there are 8 beams: |
| 21 | + * bank[0][1] -- bank[2][1] |
| 22 | + * bank[0][1] -- bank[2][3] |
| 23 | + * bank[0][2] -- bank[2][1] |
| 24 | + * bank[0][2] -- bank[2][3] |
| 25 | + * bank[0][5] -- bank[2][1] |
| 26 | + * bank[0][5] -- bank[2][3] |
| 27 | + * bank[2][1] -- bank[3][2] |
| 28 | + * bank[2][3] -- bank[3][2] |
| 29 | +Note that there is no beam between any device on the 0<sup>th</sup> row with any on the 3<sup>rd</sup> row. |
| 30 | +This is because the 2<sup>nd</sup> row contains security devices, which breaks the second condition. |
| 31 | +</pre> |
| 32 | + |
| 33 | +<p><strong class="example">Example 2:</strong></p> |
| 34 | +<img alt="" src="https://assets.leetcode.com/uploads/2021/12/24/laser2.jpg" style="width: 244px; height: 325px;" /> |
| 35 | +<pre> |
| 36 | +<strong>Input:</strong> bank = ["000","111","000"] |
| 37 | +<strong>Output:</strong> 0 |
| 38 | +<strong>Explanation:</strong> There does not exist two devices located on two different rows. |
| 39 | +</pre> |
| 40 | + |
| 41 | +<p> </p> |
| 42 | +<p><strong>Constraints:</strong></p> |
| 43 | + |
| 44 | +<ul> |
| 45 | + <li><code>m == bank.length</code></li> |
| 46 | + <li><code>n == bank[i].length</code></li> |
| 47 | + <li><code>1 <= m, n <= 500</code></li> |
| 48 | + <li><code>bank[i][j]</code> is either <code>'0'</code> or <code>'1'</code>.</li> |
| 49 | +</ul> |
0 commit comments