給定正整數陣列 a,a[i] 表示第 i 個觀光景點的評分,並且兩個景點 i 和 j 之間的距離為 j - i。
一對景點(i < j)組成的觀光組合的得分為(a[i] + a[j] + i - j):景點的評分之和減去它們兩者之間的距離。
返回一對觀光景點能取得的最高分。
示例:
輸入:[8,1,5,2,6]暴力求解這題其實最容易想到的就是暴力求解,每兩個兩個計算,記錄下最大值,最後再返回,**比較簡單輸出:11
解釋:i = 0, j = 2,
a[i] + a[j] + i - j = 8 + 5 + 0 - 2 = 11
根據公式求解暴力求解畢竟效率不高,我們還可以根據上面的計算公式來找規律。根據公式public
intmaxscoresightseeingpair
(int
a)}return res;
}
res = a[i] + a[j] + i - j (i < j)
我們求每個景點j的時候,他的a[j] - j 實際上是固定的,要想讓res最大,我們就要想辦法讓a[i] + i盡可能大。所以我們可以使用乙個變數cur記錄下遍歷過的最大值(當前值+當前下標),所以**很容易想到
總結這題沒什麼難度,主要還是要搞懂這個公式。public
intmaxscoresightseeingpair
(int
a)return res;
}
1014 最佳觀光組合
給定正整數陣列a,a i 表示第i個觀光景點的評分,並且兩個景點i和j之間的距離為j i。一對景點 i j 組成的觀光組合的得分為 a i a j i j 景點的評分之和減去它們兩者之間的距離。返回一對觀光景點能取得的最高分。示例 輸入 8,1,5,2,6 輸出 11 解釋 i 0,j 2,a i ...
最佳觀光組合 動態規劃
題目 leetcode第1014題 在看題目解析之前,我一直在推公式,然而得到的公式卻沒什麼鬼用,可能我太蠢了,dp問題也太tm難了,嗚嗚嗚嗚嗚。言歸正傳,貼上題目。題目要求 values i values j i j 因為 i j 所以當我們要選 j 間房子是,我們要在前面 0,j 1 之間選個房...
leetcode 1014 最佳觀光組合
給定正整數陣列 a,a i 表示第 i 個觀光景點的評分,並且兩個景點 i 和 j 之間的距離為 j i。一對景點 i j 組成的觀光組合的得分為 a i a j i j 景點的評分之和減去它們兩者之間的距離。返回一對觀光景點能取得的最高分。這道題目直接的做法是遍歷每一種組合,這裡採用一種比較巧妙的...