समस्या
टू-डू ऐप काम List<T> जैसे टाइप वाले कलेक्शन में रखता है। हर काम का एक शीर्षक और पूरा होने का निशान होता है।
खाली लिस्ट से शुरू करें और ऑपरेशन प्रोसेस करें, हर एक में कमांड और शीर्षक (शीर्षक पहले स्पेस के बाद का सब कुछ है):
add <title>: अंत में एक बाकी काम जोड़ें, जब तक उसी शीर्षक का काम पहले से न हो।done <title>: उस काम को पूरा चिह्नित करें (न हो तो कोई असर नहीं)।remove <title>: उस काम को हटाएँ (न हो तो कोई असर नहीं)।
todo_list(operations) लिखें।
इनपुट
operations: ऑपरेशन। शीर्षक में स्पेस हो सकते हैं और उनकी सटीक तुलना होती है।
आउटपुट
जो काम पूरे नहीं हुए, उनके शीर्षक जोड़े जाने के क्रम में लौटाएँ।
सीमाएँ
0 ≤ ऑपरेशन की संख्या ≤ 10,000
शीर्षक 1 से 50 कैरेक्टर के
उदाहरण
इनपुट:
operations = ["add Buy milk", "add Write report", "done Buy milk", "add Call Ada"]
अपेक्षित आउटपुट:
expected = ["Write report", "Call Ada"]
इनपुट:
std::vector<std::string> operations = {"add Buy milk", "add Write report", "done Buy milk", "add Call Ada"};
अपेक्षित आउटपुट:
std::vector<std::string> expected = {"Write report", "Call Ada"};
इनपुट:
string[] operations = new string[] {"add Buy milk", "add Write report", "done Buy milk", "add Call Ada"};
अपेक्षित आउटपुट:
string[] expected = new string[] {"Write report", "Call Ada"};
व्याख्या
Buy milk पूरा हो गया, इसलिए बाकी दो काम जोड़े जाने के क्रम में बचते हैं: ["Write report", "Call Ada"]।
इनपुट:
operations = ["add Gym", "add Gym", "remove Gym", "done Gym"]
अपेक्षित आउटपुट:
expected = []
इनपुट:
std::vector<std::string> operations = {"add Gym", "add Gym", "remove Gym", "done Gym"};
अपेक्षित आउटपुट:
std::vector<std::string> expected = {};
इनपुट:
string[] operations = new string[] {"add Gym", "add Gym", "remove Gym", "done Gym"};
अपेक्षित आउटपुट:
string[] expected = new string[] {};
व्याख्या
दूसरा add अनदेखा होता है क्योंकि Gym पहले से है; उसे हटाने पर कुछ नहीं बचता, और न मौजूद काम पर done का कोई असर नहीं: []।
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
हर काम को शीर्षक और स्थिति वाले छोटे रिकॉर्ड के रूप में रखें।
संकेत 2
जोड़ने, पूरा करने या हटाने से पहले सटीक शीर्षक से काम ढूँढें।
संकेत 3
आख़िर में सिर्फ़ अधूरे काम, जोड़े जाने के क्रम में रखें।
अपेक्षित जटिलता
समय O(n²), अतिरिक्त स्थान O(n)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।