题目:
解题思路:
一开始对本题尝试两层for 循环遍历,时间复杂度为 , 超出时间限制,需要降低时间复杂度。
题目中求的组合得分可以分为 values[ i ] + i 和 values[ j ] - j 两部分
要求得最高分即求 values[ i ] + i 和 values[ j ] - j 的最大值的和。
int maxScoreSightseeingPair(int* values, int valuesSize) {int value = values[0];int result = 0;for(int i = 1; i < valuesSize ; i++){result = fmax(result, value + values[i] -i);value = fmax(value, values[i] + i);}return result;
}