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