给你一个长度为 n 的整数数组 nums。
如果一对下标 (i, j) 满足以下所有条件,则称其为一个影子对:
0 <= i < j < nnums[i] < nums[j]k,使得 i < k < j 且 nums[i] < nums[k] < nums[j]。返回影子对的总数。
示例 1:
输入: nums = [3,1,4,2,5]
输出: 5
解释:
(i, j) | nums[i] | nums[j] | 为何是影子对 |
|---|---|---|---|
| (0, 2) | 3 | 4 | nums[1] = 1 不严格位于 3 和 4 之间 |
| (1, 2) | 1 | 4 | 不存在满足 1 < k < 2 的下标 k |
| (1, 3) | 1 | 2 | nums[2] = 4 不严格位于 1 和 2 之间 |
| (2, 4) | 4 | 5 | nums[3] = 2 不严格位于 4 和 5 之间 |
| (3, 4) | 2 | 5 | 不存在满足 3 < k < 4 的下标 k |
因此,答案为 5。
示例 2:
输入: nums = [6,7,8,9]
输出: 3
解释:
(i, j) | nums[i] | nums[j] | 为何是影子对 |
|---|---|---|---|
| (0, 1) | 6 | 7 | 不存在满足 0 < k < 1 的下标 k |
| (1, 2) | 7 | 8 | 不存在满足 1 < k < 2 的下标 k |
| (2, 3) | 8 | 9 | 不存在满足 2 < k < 3 的下标 k |
因此,答案为 3。
提示:
3 <= n == nums.length <= 5 * 1041 <= nums[i] <= 109