We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 63da0f1 commit a4a4a1eCopy full SHA for a4a4a1e
Two_Pointers/1537.Get-the-Maximum-Score/Readme.md
@@ -0,0 +1,11 @@
1
+### 1537.Get-the-Maximum-Score
2
+
3
+本题是一个另类的双指针题。
4
5
+我们可以认为上路和下路有若干个传送门。当你在某条支路非传送门的位置时,你别无选择,只能继续前进,并将该点的数值加入该支路的score。假设你从上路走到传送门的位置时累计的分数是score1,从下路走到同一个传送门的位置时累计的分数是score2,那么你无论之后选择走哪一条路,你都会以max(score1,score2)作为新的base。也就是说,如果score1更大,那么意味着在来到传送门之前,你应该选择的是上路;反之你应该选择的是下路。在传送门之前选择上路或者下路,完全不影响你之后的选择,因为传送门的转移是没有代价的。
6
7
+于是我们为上下两路设计两个双指针。当到达传送门之前时,指针各自前进,但都会在同一个传送门的位置停下来。然后综合两者分数的取较大值。然后继续分别走上下两路。
8
9
+那么如何让两个指针都恰好在传送门的位置停下来呢?简单的比较两个指针对应的数值大小就行了。如果nums1[i]更小就移动i指针,反之就移动j指针。最终i和j会在同一个传送门停下来。
10
11
+注意,指针移动的过程中不能对M取模。必须上下两路都走完了,再在两个score里面取最大值后再取模。
0 commit comments