C++ 统计团队数量
假设有 n 个士兵站成一列。每个士兵都被分配了一个唯一的评级值。我们必须根据以下规则在他们中间组建一个 3 人团队:
选择 3 个士兵,索引为 (i, j, k),其评级为 (rating[i], rating[j], rating[k])。
如果满足以下条件,则团队有效:(rating[i] < rating[j] < rating[k]) 或 (rating[i] > rating[j] > rating[k])。
我们必须找到可以组建的团队数量。(士兵可以属于多个团队)。
因此,如果输入类似于 rating = [2,5,3,4,1],则输出为 3,因为我们可以组建三个团队,例如 (2,3,4), (5,4,1), (5,3,1)。
为了解决这个问题,我们将遵循以下步骤:
ret := 0, n := v 的大小
for 初始化 i := 0,当 i < n 时,更新(i 增加 1),执行:
for 初始化 j := i + 1,当 j < n 时,更新(j 增加 1),执行:
for 初始化 k := j + 1,当 k < n 时,更新(k 增加 1),执行:
如果 v[i] < v[j] 且 v[j] < v[k],则:
(ret 增加 1)
否则,如果 v[i] > v[j] 且 v[j] > v[k],则:
(ret 增加 1)
返回 ret
示例
让我们看看以下实现以获得更好的理解:
#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
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP