मान लीजिए कुछ लेनदेन हैं। एक लेनदेन संभवतः अमान्य है यदि:
- राशि $1000 से अधिक है, या;
- यदि यह 60 मिनट के भीतर (सम्मिलित) किसी अन्य लेनदेन से होता है जिसका नाम समान है लेकिन शहर अलग है।
यहां प्रत्येक लेनदेन स्ट्रिंग transactions[i] में कॉमा से अलग मान होते हैं जो नाम, समय (मिनट में), राशि, और लेनदेन के शहर का प्रतिनिधित्व करते हैं। हमारे पास लेनदेन की एक सूची है, उन लेनदेन की सूची ढूंढें जो संभवतः अमान्य हैं।
उदाहरण के लिए, यदि इनपुट ["alice,20,800,mtv", "bob,50,1200,mtv"] जैसा है, तो उत्तर ["bob,50,1200,mtv"] होगा।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- एक सेट
sपरिभाषित करें। एक मैपmपरिभाषित करें iको 0 सेtके आकार - 1 तक लूप करेंx := t[i]temp := स्ट्रिंग x का उपयोग करके नोडjको 0 सेm[temp के नाम]के आकार तक लूप करेंy := m[temp के नाम][j]- यदि
y का शहर temp के शहर नहीं हैऔर|y का समय - temp का समय| <= 60- नोड
yको स्ट्रिंग के रूप में सेटsमें डालें, औरxकोsमें डालें
- नोड
- यदि
temp की राशि > 1000, तोxकोsमें डालें tempकोm[temp के नाम]में डालें
- सेट
sमें आइटम लौटाएं
उदाहरण (C++)
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Node{ public: string name; string city; int time; int amount; }; class Solution { public: Node getNode(string s){ string temp = ""; Node ret; int cnt = 0; for(int i = 0; i < s.size(); i++){ if(s[i] == ','){ if(cnt == 0){ ret.name = temp; } else if(cnt == 1){ ret.time = stoi(temp); } else if(cnt == 2){ ret.amount = stoi(temp); } else { ret.city = temp; } cnt++; temp = ""; continue; } temp += s[i]; } ret.city = temp; return ret; } vector<string> invalidTransactions(vector<string>& t) { set <string >s; map <string ,vector < Node >> m; for(int i = 0; i < t.size(); i++){ string x = t[i]; Node temp = getNode(x); for(int j = 0; j < m[temp.name].size(); j++){ Node y = m[temp.name][j]; if(y.city != temp.city && abs(y.time - temp.time) <= 60){ s.insert(y.name + "," + to_string(y.time) + "," + to_string(y.amount) + "," + y.city); s.insert(x); } } if(temp.amount > 1000){ s.insert(x); } m[temp.name].push_back(temp); } vector <string> ret(s.begin(), s.end()); return ret; } }; main(){ vector<string> v1 = {"alice,20,800,mtv","bob,50,1200,mtv"}; Solution ob; print_vector(ob.invalidTransactions(v1)); }इनपुट
["alice,20,800,mtv","bob,50,1200,mtv"]
आउटपुट
[bob,50,1200,mtv, ]