मुझे इस प्रश्न को अमेज़ॅन साक्षात्कार में पूछा गया था।फ़ाइल में दो पंक्तियां खोजें जो
आपके पास कई लाइनों वाली एक फ़ाइल है लेकिन दो पंक्तियां समान हैं। उन दो लाइनों को खोजें। मैंने स्पष्ट उत्तर दिया जो एन^2 समय में भाग गया। तब मैं एक जवाब के साथ आया जिसने एक हैश टेबल का उपयोग किया, लेकिन उन्हें उस जवाब को पसंद नहीं आया क्योंकि वे कहते हैं कि यह फ़ाइल काम नहीं करेगा अगर फ़ाइल गीगाबाइट्स में थी। एक और जवाब जो मैं आया था, हैश परिणाम को स्मृति में संग्रहीत करने के बजाय, हैश वैल्यू के समान नाम वाली फ़ाइल बनाएं, और फ़ाइल में उसी ही हैश मान के साथ लाइनों को स्टोर करें। या तो वे मेरे समाधान को समझ नहीं पाए थे या उन्हें यह पसंद नहीं आया।
कोई विचार?
धन्यवाद
लाइनों और प्रत्येक पंक्ति का गणना लंबाई के माध्यम से
लिनक्स के लिए यह आसान है 'क्रम | uniq -c | grep '^ 2' ' –
ठीक है, मुझे अन्य समाधानों को देखने दो, लेकिन क्या यह फ़ाइल को स्मृति में नहीं डालेगा? –
@ जॉनस्मिथ: जीएनयू 'सॉर्ट' जानता है कि जब डेटा मेमोरी में फिट नहीं होता है तो बाहरी प्रकार कैसे करें (http://vkundeti.blogspot.co.uk/2008/03/tech-algorithmic-details-of-unix -sort.html)। –