解题思路:
暴力方法会超时,要将复杂度降到O(N),即一次遍历。首先令i=0;然后随着j往后遍历,要在这个过程中更新i的值。具体代码如下:
class Solution {
public:
int maxScoreSightseeingPair(vector<int>& A) {
int res=-1;
int max_i=A[0]+0;
for(int j=1;j<A.size();j++){
res=max(res,A[j]-j+max_i);
max_i=max(max_i,A[j]+j);
}
return res;
}
};