n명의 군인이 일렬로 서 있다고 가정합니다. 여기에서 각 병사는 고유한 등급 값을 할당받습니다. 다음 규칙을 사용하여 3명의 병사로 구성된 팀을 만들어야 합니다. -
등급(등급[i], 등급[j], 등급[k])이 되도록 지수(i, j, k)가 있는 병사 3명을 선택합니다.
팀은 - (rating[i]
우리는 우리가 구성할 수 있는 팀의 수를 찾아야 합니다. (병사들은 여러 팀에 속할 수 있습니다.)
따라서 입력이 Rating =[2,5,3,4,1]과 같으면 출력은 3이 됩니다. (2,3,4), (5,4,1)과 같은 세 개의 팀을 구성할 수 있기 때문입니다. , (5,3,1).
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
ret :=0, n :=v의 크기
-
initialize i :=0의 경우, i
-
j 초기화의 경우 :=i + 1, j
-
k:=j + 1 초기화의 경우 k
-
v[i]
-
(ret 1 증가)
-
-
그렇지 않으면 v[i]> v[j] 및 v[j]> v[k]일 때 -
-
(ret 1 증가)
-
-
-
-
-
리턴 렛
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <bits/stdc++.h> using namespace std; class Solution { public: int numTeams(vector<int>& v) { int ret = 0; int n = v.size(); for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { if (v[i] < v[j] && v[j] < v[k]) ret++; else if (v[i] > v[j] && v[j] > v[k]) ret++; } } } return ret; } }; main(){ Solution ob; vector<int> v = {2,5,3,4,1}; cout << (ob.numTeams(v)); }
입력
{2,5,3,4,1}
출력
3