leetcode1014——最佳观光组合

题目链接:https://leetcode-cn.com/problems/best-sightseeing-pair/

思路:不能采用两重循环暴力枚举,会超时,而应该将A[i]+A[j]+i-j拆分为两部分,A[i]+i,A[j]-j两部分

(i<j)。这样单重循环枚举j,保留j之前的最大的A[i]+i,为max_i_part,然后每次取max_i_part+A[j]-j当前的最大值。

class Solution {
public:
    int maxScoreSightseeingPair(vector<int>& A) {
        int len=A.size();
        int max_i_part=-1;
        int max_result=-1;
        for(int j=1;j<len;j++)
        {
            max_i_part=max(max_i_part,A[j-1]+j-1);
            max_result=max(max_result,max_i_part+A[j]-j);
        }
        return max_result;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章