|
17 | 17 | <pre>
|
18 | 18 | <strong>输入:</strong> nums = [3, 4, 2]
|
19 | 19 | <strong>输出:</strong> 6
|
20 |
| -<strong>解释:</strong> |
| 20 | +<strong>解释:</strong> |
21 | 21 | 删除 4 来获得 4 个点数,因此 3 也被删除。
|
22 | 22 | 之后,删除 2 来获得 2 个点数。总共获得 6 个点数。
|
23 | 23 | </pre>
|
|
27 | 27 | <pre>
|
28 | 28 | <strong>输入:</strong> nums = [2, 2, 3, 3, 3, 4]
|
29 | 29 | <strong>输出:</strong> 9
|
30 |
| -<strong>解释:</strong> |
| 30 | +<strong>解释:</strong> |
31 | 31 | 删除 3 来获得 3 个点数,接着要删除两个 2 和 4 。
|
32 | 32 | 之后,再次删除 3 获得 3 个点数,再次删除 3 获得 3 个点数。
|
33 | 33 | 总共获得 9 个点数。
|
@@ -70,7 +70,21 @@ nonSelect[i] = Math.max(select[i-1], nonSelect[i-1]);
|
70 | 70 | <!-- 这里可写当前语言的特殊实现逻辑 -->
|
71 | 71 |
|
72 | 72 | ```python
|
73 |
| - |
| 73 | +class Solution: |
| 74 | + def deleteAndEarn(self, nums: List[int]) -> int: |
| 75 | + mx = float('-inf') |
| 76 | + for num in nums: |
| 77 | + mx = max(mx, num) |
| 78 | + total = [0] * (mx + 1) |
| 79 | + for num in nums: |
| 80 | + total[num] += num |
| 81 | + first = total[0] |
| 82 | + second = max(total[0], total[1]) |
| 83 | + for i in range(2, mx + 1): |
| 84 | + cur = max(first + total[i], second) |
| 85 | + first = second |
| 86 | + second = cur |
| 87 | + return second |
74 | 88 | ```
|
75 | 89 |
|
76 | 90 | ### **Java**
|
@@ -103,6 +117,37 @@ class Solution {
|
103 | 117 | }
|
104 | 118 | ```
|
105 | 119 |
|
| 120 | +### **Go** |
| 121 | + |
| 122 | +```go |
| 123 | +func deleteAndEarn(nums []int) int { |
| 124 | + |
| 125 | + max := func(x, y int) int { |
| 126 | + if x > y { |
| 127 | + return x |
| 128 | + } |
| 129 | + return y |
| 130 | + } |
| 131 | + |
| 132 | + mx := math.MinInt32 |
| 133 | + for _, num := range nums { |
| 134 | + mx = max(mx, num) |
| 135 | + } |
| 136 | + total := make([]int, mx+1) |
| 137 | + for _, num := range nums { |
| 138 | + total[num] += num |
| 139 | + } |
| 140 | + first := total[0] |
| 141 | + second := max(total[0], total[1]) |
| 142 | + for i := 2; i <= mx; i++ { |
| 143 | + cur := max(first+total[i], second) |
| 144 | + first = second |
| 145 | + second = cur |
| 146 | + } |
| 147 | + return second |
| 148 | +} |
| 149 | +``` |
| 150 | + |
106 | 151 | ### **...**
|
107 | 152 |
|
108 | 153 | ```
|
|
0 commit comments