1937. Maximum Number of Points with Cost Medium

@problem@discussion
#Array#Dynamic Programming



1/**
2 * [1937] Maximum Number of Points with Cost
3 *
4 * You are given an m x n integer matrix points (0-indexed). Starting with 0 points, you want to maximize the number of points you can get from the matrix.
5 * To gain points, you must pick one cell in each row. Picking the cell at coordinates (r, c) will add points[r][c] to your score.
6 * 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 r and r + 1 (where 0 <= r < m - 1), picking cells at coordinates (r, c1) and (r + 1, c2) will subtract abs(c1 - c2) from your score.
7 * Return the maximum number of points you can achieve.
8 * abs(x) is defined as:
9 * 
10 * 	x for x >= 0.
11 * 	-x for x < 0.
12 * 
13 *  
14 * Example 1: 
15 * <img alt="" src="https://assets.leetcode.com/uploads/2021/07/12/screenshot-2021-07-12-at-13-40-26-diagram-drawio-diagrams-net.png" style="width: 300px; height: 300px;" />
16 * Input: points = [[1,2,3],[1,5,1],[3,1,1]]
17 * Output: 9
18 * Explanation:
19 * The blue cells denote the optimal cells to pick, which have coordinates (0, 2), (1, 1), and (2, 0).
20 * You add 3 + 5 + 3 = 11 to your score.
21 * However, you must subtract abs(2 - 1) + abs(1 - 0) = 2 from your score.
22 * Your final score is 11 - 2 = 9.
23 * 
24 * Example 2:
25 * <img alt="" src="https://assets.leetcode.com/uploads/2021/07/12/screenshot-2021-07-12-at-13-42-14-diagram-drawio-diagrams-net.png" style="width: 200px; height: 299px;" />
26 * Input: points = [[1,5],[2,3],[4,2]]
27 * Output: 11
28 * Explanation:
29 * The blue cells denote the optimal cells to pick, which have coordinates (0, 1), (1, 1), and (2, 0).
30 * You add 5 + 3 + 4 = 12 to your score.
31 * However, you must subtract abs(1 - 1) + abs(1 - 0) = 1 from your score.
32 * Your final score is 12 - 1 = 11.
33 * 
34 *  
35 * Constraints:
36 * 
37 * 	m == points.length
38 * 	n == points[r].length
39 * 	1 <= m, n <= 10^5
40 * 	1 <= m * n <= 10^5
41 * 	0 <= points[r][c] <= 10^5
42 * 
43 */
44pub struct Solution {}
45
46// problem: https://leetcode.com/problems/maximum-number-of-points-with-cost/
47// discuss: https://leetcode.com/problems/maximum-number-of-points-with-cost/discuss/?currentPage=1&orderBy=most_votes&query=
48
49// submission codes start here
50
51impl Solution {
52    pub fn max_points(points: Vec<Vec<i32>>) -> i64 {
53        
54    }
55}
56
57// submission codes end
58
59#[cfg(test)]
60mod tests {
61    use super::*;
62
63    #[test]
64    fn test_1937() {
65    }
66}
67


Back
© 2025 bowen.ge All Rights Reserved.