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;
    }
};

 

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