मान लीजिए कि एक पंक्ति में 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