笔记01-刷题总结

19 阅读1分钟

方向一笔记:学习方法与心得

观光景点组合得分问题 小R正在研究一组观光景点,每个景点都有一个评分,保存在数组values中,其中 values[i] 表示第 i 个观光景点的评分。同时,景点之间的距离由它们的下标差 j-i 表示。 一对景点 i<j 的观光组合得分为 values[i]+values[j]+i-j ,也就是两者评分之和减去它们之间的距离。 小R想知道,在哪种情况下能够获得观光景点组合的最高得分。

思路: 对于景点 i,要得到最高评分,需找到任意 j > i 中,values[j]-j 的最大值 Jmax 由此可以用数组 rightMax[i] 存储 Jmax,记数组长度为 n,rightMax[n-1] 初始化为负无穷 然后从下标 n-2 开始,一直到下标 0 遍历: rightMax[i] = max(rightMax[i+1], values[i+1] - (i+1))

最终答案为 rightMax[i]+values[i]+i 的最大值

时间复杂度: O(n) 空间复杂度: O(n)