-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy path1395-count-number-of-teams.js
45 lines (39 loc) · 1.19 KB
/
1395-count-number-of-teams.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
* 1395. Count Number of Teams
* https://leetcode.com/problems/count-number-of-teams/
* Difficulty: Medium
*
* 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).
*/
/**
* @param {number[]} rating
* @return {number}
*/
var numTeams = function(rating) {
let result = 0;
const n = rating.length;
for (let j = 1; j < n - 1; j++) {
let leftLess = 0;
let leftGreater = 0;
let rightLess = 0;
let rightGreater = 0;
for (let i = 0; i < j; i++) {
if (rating[i] < rating[j]) leftLess++;
else leftGreater++;
}
for (let k = j + 1; k < n; k++) {
if (rating[k] < rating[j]) rightLess++;
else rightGreater++;
}
result += leftLess * rightGreater + leftGreater * rightLess;
}
return result;
};