leetcode1014:最佳觀光組合

1、一開始考慮兩個for循環解決,不出意料,超時
2、後來想着建立一個類,標明序號值,但是還是和原來差不多
變換公式A[i]+i+A[j]-j
3、看題解,很簡單,用兩個值,一個保存A[i]+i到目前爲止的最大值。一個保存A[i]+i+A[j]-j到目前的最大值
4、一個for循環不斷向前推進,兩個最大值相加即可
5、該方法用於解決一個元素與其右邊元素相加的最大值
代碼:

package com.LeetCode1.Array;

import java.util.Arrays;

public class leet1014 {
	/**
	 * 修改1:超時
	 * @param args
	 */
	public static void main(String[] args) {
		int[] A = {8,1,5,2,6};
		System.out.println(maxScoreSightseeingPair(A));
	}
	public static int maxScoreSightseeingPair(int[] A) {
		int n=A.length;
		int premax = A[0]+0;
		int max=0;
		for(int i=1;i<n;i++)
		{
			max = Math.max(max, premax+A[i]-i);
			premax = Math.max(premax, A[i]+i);
		}
		return max;
    }
}

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