1014 最佳观光组合
该题题意清晰 给出了得分的公式 我们可以拆分成values[i]+i和values[j]-j两个部分 要求表达式的最大值 我们可以维护一部分变量最大 再通过遍历确定另一个变量的最大值 因为i是一定小于j的 我们可以在遍历j的同时 确定在j之前values[i]+i该表达式的最大值用mx来表示 最开始肯定初始化成数组第一个数 然后每一次遍历不断更新最大值
class Solution {
public:
int maxScoreSightseeingPair(vector<int>& values) {
int ans=0;
int mx=values[0];
for(int j=1;j<values.size();j++){
ans=max(ans,values[j]-j+mx);
mx=max(mx,values[j]+j);
}
return ans;
}
};