Class Solution
java.lang.Object
g1901_2000.s1937_maximum_number_of_points_with_cost.Solution
1937 - Maximum Number of Points with Cost.<p>Medium</p>
<p>You are given an <code>m x n</code> integer matrix <code>points</code> ( <strong>0-indexed</strong> ). Starting with <code>0</code> points, you want to <strong>maximize</strong> the number of points you can get from the matrix.</p>
<p>To gain points, you must pick one cell in <strong>each row</strong>. Picking the cell at coordinates <code>(r, c)</code> will <strong>add</strong> <code>points[r][c]</code> to your score.</p>
<p>However, you will lose points if you pick a cell too far from the cell that you picked in the previous row. For every two adjacent rows <code>r</code> and <code>r + 1</code> (where <code>0 <= r < m - 1</code>), picking cells at coordinates <code>(r, c<sub>1</sub>)</code> and <code>(r + 1, c<sub>2</sub>)</code> will <strong>subtract</strong> <code>abs(c<sub>1</sub> - c<sub>2</sub>)</code> from your score.</p>
<p>Return <em>the <strong>maximum</strong> number of points you can achieve</em>.</p>
<p><code>abs(x)</code> is defined as:</p>
<ul>
<li><code>x</code> for <code>x >= 0</code>.</li>
<li><code>-x</code> for <code>x < 0</code>.</li>
</ul>
<p><strong>Example 1:</strong></p>
<p><img src="https://assets.leetcode.com/uploads/2021/07/12/screenshot-2021-07-12-at-13-40-26-diagram-drawio-diagrams-net.png" alt="" /></p>
<p><strong>Input:</strong> points = [[1,2,3],[1,5,1],[3,1,1]]</p>
<p><strong>Output:</strong> 9</p>
<p><strong>Explanation:</strong></p>
<p>The blue cells denote the optimal cells to pick, which have coordinates (0, 2), (1, 1), and (2, 0).</p>
<p>You add 3 + 5 + 3 = 11 to your score.</p>
<p>However, you must subtract abs(2 - 1) + abs(1 - 0) = 2 from your score.</p>
<p>Your final score is 11 - 2 = 9.</p>
<p><strong>Example 2:</strong></p>
<p><img src="https://assets.leetcode.com/uploads/2021/07/12/screenshot-2021-07-12-at-13-42-14-diagram-drawio-diagrams-net.png" alt="" /></p>
<p><strong>Input:</strong> points = [[1,5],[2,3],[4,2]]</p>
<p><strong>Output:</strong> 11</p>
<p><strong>Explanation:</strong></p>
<p>The blue cells denote the optimal cells to pick, which have coordinates (0, 1), (1, 1), and (2, 0).</p>
<p>You add 5 + 3 + 4 = 12 to your score.</p>
<p>However, you must subtract abs(1 - 1) + abs(1 - 0) = 1 from your score.</p>
<p>Your final score is 12 - 1 = 11.</p>
<p><strong>Constraints:</strong></p>
<ul>
<li><code>m == points.length</code></li>
<li><code>n == points[r].length</code></li>
<li><code>1 <= m, n <= 10<sup>5</sup></code></li>
<li><code>1 <= m * n <= 10<sup>5</sup></code></li>
<li><code>0 <= points[r][c] <= 10<sup>5</sup></code></li>
</ul>
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
Solution
public Solution()
-
-
Method Details
-
maxPoints
public long maxPoints(int[][] points)
-