題目連結:
題目意譯:
現在有 n 位士兵排成一列。每一位士兵被指派一個獨一無二的評分值。
你需要根據下列規則來從士兵們選出一個有 3 位士兵的隊伍:
選出 3 位索引值分別為 i 、 j 和 k 的士兵,而評分值分別為 rating[i] 、 rating[j] 和 rating[k]。
如果 rating[i] < rating[j] < rating[k] 或是 rating[i] > rating[j] > rating[k] 成立,其中 0 ≦ i < j < k < n,則該隊伍合法。
回傳你可以形成的合法隊伍數。每一位士兵可以同時在多個隊伍之中。
限制:
n == rating.length
3 ≦ n ≦ 1000
1 ≦ rating[i] ≦ 10 ^ 5
rating 中所有整數彼此相異。
範例測資:
範例 1:
輸入: rating = [2,5,3,4,1]
輸出: 3
解釋: 我們可以形成這三個合法隊伍。(2,3,4), (5,4,1), (5,3,1)。
範例 2:
輸入: rating = [2,1,3]
輸出: 0
解釋: 我們無法形成任何合法隊伍。
範例 3:
輸入: rating = [1,2,3,4]
輸出: 4
解題思維:
跟
這種題目類似,我們可以利用動態規劃(Dynamic Programming)來解出本題。遞迴式也與該題類似,只是不需要「公差」的條件,只需要差值都是正的或是都是負的即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。