LeetCode算法网站算法题
https://leetcode-cn.com/problems/best-sightseeing-pair/
死亡暴力:
class Solution
{
public:
int maxScoreSightseeingPair(vector<int>& A)
{
int n=A.size();
int ans=INT_MIN;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
ans=(ans,A[i]+i+A[j]-j);
}
return ans;
}
};
暴力优化:
class Solution
{
public:
int maxScoreSightseeingPair(vector<int>& A)
{
int n=A.size();
int ans=INT_MIN,mx=A[0]+0;
for(int j=1; j<n; j++)
{
ans=max(ans,mx+A[j]-j);
//亮点就是在这里,边遍历便维护最大的A[i]+i,因为A[i]+i的最大值与A[j]-j的最大值并无必然关联,所以可以这样的优化
mx=max(mx,A[j]+j);
}
return ans;
}
};