मान लीजिए कि हमारे पास रेस्तरां की एक श्रृंखला है जहां रेस्तरां [i] में [इडी, रेटिंगी, शाकाहारी अनुकूल, pricei, दूरी] है। हमें तीन फ़िल्टर का उपयोग करके रेस्तरां को फ़िल्टर करना होगा।
-
शाकाहारी के अनुकूल फ़िल्टर या तो सही होगा (मतलब हमें केवल शाकाहारी-अनुकूल सेट वाले रेस्तरां को ही शामिल करना चाहिए) या गलत (मतलब हम किसी भी रेस्तरां को शामिल कर सकते हैं)।
-
अधिकतम मूल्य फ़िल्टर और अधिकतम दूरी फ़िल्टर जो मूल्य और रेस्तरां की दूरी के लिए अधिकतम मूल्य हैं जिन पर हमें क्रमशः विचार करना चाहिए।
हमें उच्चतम से निम्नतम रेटिंग द्वारा क्रमबद्ध फ़िल्टरिंग के बाद रेस्तरां आईडी की सरणी ढूंढनी है। समान रेटिंग वाले रेस्तरां के लिए, उन्हें घटते क्रम में आईडी द्वारा ऑर्डर करें। सादगी के लिए शाकाहारी के अनुकूल और शाकाहारी के अनुकूल होने पर मान 1 लें जब यह सत्य हो, और 0 जब यह गलत हो।
तो अगर इनपुट रेस्टोरेंट की तरह है -
[[1,4,1,40,10], [2,8,0,50,5], [3,8,1,30,4], [4,10,0,10,3],[ 5,1,1,15,1]], वीगनफ्रेंडली =1, मैक्सप्रिस =50, मैक्सडिस्टेंस =10, तो आउटपुट [3,1,5] होगा, स्पष्टीकरण नीचे जैसा है -
रेस्टोरेंट 1 [id=1, रेटिंग=4, शाकाहारी फ्रेंडली=1, कीमत=40, दूरी=10]
रेस्टोरेंट 2 [id=2, रेटिंग=8, शाकाहारी फ्रेंडली=0, कीमत=50, दूरी=5]
रेस्टोरेंट 3 [id=3, रेटिंग=8, शाकाहारी फ्रेंडली=1, कीमत=30, दूरी=4]
रेस्टोरेंट 4 [id=4, रेटिंग=10, शाकाहारी फ्रेंडली=0, कीमत=10, दूरी=3]
रेस्टोरेंट 5 [id=5, रेटिंग=1, शाकाहारी फ्रेंडली=1, कीमत=15, दूरी=1]
वीगनफ्रेंडली =1, मैक्सप्राइस =50 और मैक्सडिस्टेंस =10 के साथ रेस्तरां को फ़िल्टर करने के बाद हमारे पास रेस्तरां 3, रेस्तरां 1 और रेस्तरां 5 (घटते क्रम में रेटिंग के आधार पर) हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक मैट्रिक्स को परिभाषित करें जिसे अस्थायी कहा जाता है, n :=रेस्तरां सरणी का आकार
-
मैं के लिए 0 से n - 1 की सीमा में
-
अगर vf =0 या r[i, 2] =vf और r[i, 3] <=mp और r[i, 4] <=md, तो
-
[r[i, 0], r[i, 1]] को टेम्परेचर में डालें
-
-
-
रेटिंग के आधार पर रेस्तरां को घटते क्रम में क्रमबद्ध करें
-
रिट नामक एक सरणी बनाएं
-
मेरे लिए 0 से लेकर तापमान के आकार तक की सीमा में है
-
रिट में अस्थायी [i, 0] डालें
-
-
वापसी रिट
उदाहरण (C++)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; void print_vector(vector<int> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: static bool cmp(vector <int> a, vector <int> b){ if(b[1] != a[1])return a[1] > b[1]; return a[0] > b[0]; } vector<int>filterRestaurants(vector<vector<int>>& r, int vf, int mp, int md) { vector < vector <int> > temp; int n = r.size(); for(int i = 0; i < n; i++){ if((vf == 0 || r[i][2] == vf) && r[i][3] <= mp && r[i][4] <= md){ temp.push_back({r[i][0], r[i][1]}); } } sort(temp.begin(), temp.end(), cmp); vector <int> ret; for(int i = 0; i < temp.size(); i++)ret.push_back(temp[i][0]); return ret; } }; main(){ vector<vector<int>> v = {{1,4,1,40,10},{2,8,0,50,5},{3,8,1,30,4},{4,10,0,10,3},{5,1,1,15,1}}; Solution ob; print_vector(ob.filterRestaurants(v, 1, 50, 10)); }
इनपुट
[[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[5,1,1,15,1]] 1 50 10
आउटपुट
[3,1,5]