0%

### 题目描述

There are n soldiers standing in a line. Each soldier is assigned a unique rating value.

You have to form a team of 3 soldiers amongst them under the following rules:

Choose 3 soldiers with index (i, j, k) with rating (rating[i], rating[j], rating[k]).
A team is valid if: (rating[i] < rating[j] < rating[k]) or (rating[i] > rating[j] > rating[k]) where (0 <= i < j < k < n).
Return the number of teams you can form given the conditions. (soldiers can be part of multiple teams).

### 例子

#### 例子 1

Input: rating = [2,5,3,4,1]
Output: 3
Explanation: We can form three teams given the conditions. (2,3,4), (5,4,1), (5,3,1).

#### 例子 2

Input: rating = [2,1,3]
Output: 0
Explanation: We can’t form any team given the conditions.

#### 例子 3

Input: rating = [1,2,3,4]
Output: 4

#### 限制条件

• `n == rating.length`
• `1 <= n <= 200`
• `1 <= rating[i] <= 10^5`

### 解题思路

#### 方法一

• 时间复杂度： O(n^3)
• 空间复杂度： O(1)

#### 方法二

• 对于升序的情况，组合有： `l * r`
• 对于逆序的情况，左边有 `i - l` 个，右边有 `N - 1 - l` 个，所以有 `(i - l) * (N - 1 - l)`
• 最后相加一个

• 时间复杂度: O(n^2)
• 空间复杂度: O(1)