मान लीजिए कि एक पंक्ति में n सैनिक खड़े हैं। यहां प्रत्येक सैनिक को एक अद्वितीय रेटिंग मान दिया जाता है। हमें निम्नलिखित नियमों का उपयोग करते हुए उनमें से 3 सैनिकों की एक टीम बनानी है -
इंडेक्स वाले 3 सैनिक चुनें (i, j, k) जैसे कि रेटिंग (रेटिंग[i], रेटिंग[j], रेटिंग[k])।
एक टीम मान्य होगी यदि - (रेटिंग[i] <रेटिंग[j] <रेटिंग[k]) या (रेटिंग[i]> रेटिंग[j]> रेटिंग[k])।
हमें यह पता लगाना होगा कि हम कितनी टीमें बना सकते हैं। (सैनिक कई टीमों का हिस्सा हो सकते हैं)।
इसलिए, यदि इनपुट रेटिंग =[2,5,3,4,1] की तरह है, तो आउटपुट 3 होगा, क्योंकि हम तीन टीमें बना सकते हैं जैसे (2,3,4), (5,4,1) , (5,3,1)।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
रिट:=0, एन:=वी का आकार
-
इनिशियलाइज़ i:=0 के लिए, जब i
-
इनिशियलाइज़ j :=i + 1 के लिए, जब j
-
k :=j + 1 को इनिशियलाइज़ करने के लिए, जब k
-
अगर v[i]
-
(रिटर्न 1 से बढ़ाएं)
-
-
अन्यथा जब v[i]> v[j] और v[j]> v[k], तब -
-
(रिटर्न 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