यादृच्छिक क्रम में पूर्णांक की एक लिंक की गई सूची को देखते हुए, इसे दो नई लिंक्ड सूचियों में विभाजित करें जैसे कि प्रत्येक सूची के तत्वों के योग में अंतर अधिकतम है और सूचियों की लंबाई 1 से अधिक नहीं है (इस मामले में मूल सूची में तत्वों की एक विषम संख्या है)। मैं यह नहीं मान सकता कि सूची में संख्याएं अद्वितीय हैं। और उसके बाद एक पुनरावर्ती समारोह का उपयोग करने के चलने के लिए;एक लिंक्ड सूची को 2 सबसे सूक्ष्म और सबसे बड़ी संख्या वाले 0 सूचियों में विभाजित करें
एल्गोरिथ्म मैं के बारे में सोचा मूल लिंक्ड सूची पर किसी मर्ज प्रकार (लॉग एन) समय, हे (एन) अंतरिक्ष O (n & Middot) करने के लिए था सूची का अंत इसकी लंबाई निर्धारित करने के लिए, विभाजन करने के दौरान रिकर्सिव फ़ंक्शन अनचाहे कर रहा है। रिकर्सिव फ़ंक्शन ओ (एन) समय और ओ (एन) स्थान है।
क्या यह इष्टतम समाधान है? अगर कोई सोचता है कि यह प्रासंगिक है तो मैं अपना कोड पोस्ट कर सकता हूं।
अगर आपका लिंक्ड लिस्ट कार्यान्वयन एक आकार की संपत्ति रखता है, तो आपको केवल आधा रास्ते में कटौती करने के लिए सूची में आधा रास्ता चलना होगा। (हो सकता है कि http://codereview.stackexchange.com देखें!) – Jeremy
@ जेरेमी हेइलर: कोई आकार की संपत्ति नहीं, केवल एक बहुत सादा जेन मूल लिंक्ड सूची है, वास्तव में एक साथ जुड़े नोड्स के गुच्छा से ज्यादा कुछ नहीं। –
जब तक आपकी परीक्षा के लिए आपको इस प्रकार को लागू करने की आवश्यकता नहीं होती है, तो आप सॉर्टिंग करने के लिए Collections.sort का भी उपयोग कर सकते हैं। – karakuricoder