पूर्णांक की एक अद्वितीय, क्रमबद्ध सूची को देखते हुए, पुनरावृत्ति का उपयोग किए बिना एक संतुलित द्विआधारी-खोज ट्री को एक सरणी के रूप में दर्शाया गया है।
उदाहरण के लिए:
func( [1,2,3,5,8,13,21] ) => [5,2,13,1,3,8,21]
शुरू करने से पहले, एक संकेत: हम इस समस्या को एक टन सरल कर सकते हैं ताकि हमें वास्तव में इनपुट पूर्णांक (या उस मामले के लिए कोई तुलनीय वस्तु!) के बारे में सोचना न पड़े।
यदि हम जानते हैं कि इनपुट सूची पहले से ही क्रमबद्ध है, तो यह सामग्री अप्रासंगिक है। हम केवल मूल सरणी में सूचकांकों के संदर्भ में इसके बारे में सोच सकते हैं।
इनपुट सरणी का एक आंतरिक प्रतिनिधित्व तब बनता है:
func( [0,1,2,3,4,5,6] ) => [3,1,5,0,2,4,6]
इसका मतलब यह है कि तुलनात्मक वस्तुओं से निपटने के लिए कुछ लिखने के बजाय, हमें वास्तव में केवल एक फ़ंक्शन लिखने की ज़रूरत है जो रेंज [0, n) से परिणामी सरणी में मैप करता है। एक बार जब हमारे पास नया ऑर्डर होता है, तो हम केवल रिटर्न सरणी बनाने के लिए मानचित्रण को वापस इनपुट में मानों पर लागू कर सकते हैं।
मान्य समाधान चाहिए:
- शून्य-तत्व सरणी को स्वीकार करें और खाली सरणी लौटाएं।
- लंबाई n के पूर्णांक सरणी को स्वीकार करें और पूर्णांक सरणी वापस करें
- N और 2 मिनट की अगली उच्चतम शक्ति के बीच की लंबाई 1. (उदाहरण के लिए, इनपुट आकार 13 के लिए 13 और 15 के बीच कहीं भी)।
- एरे जो एक बीएसटी का प्रतिनिधित्व करता है जहां रूट नोड 0 पर है और ऊंचाई लॉग (एन) के बराबर है जहां 0 एक लापता नोड (या
null
अगर आपकी भाषा की अनुमति देता है तो एक समान मूल्य ) का प्रतिनिधित्व करता है । खाली नोड्स, यदि मौजूद हैं, तो केवल पेड़ के अंत में मौजूद होना चाहिए (जैसे,[2,1,0]
)
इनपुट पूर्णांक सरणी में निम्नलिखित गारंटी है:
- मान 32-बिट हस्ताक्षरित पूर्णांक शून्य से अधिक हैं।
- मूल्य अद्वितीय हैं।
- मान स्थिति शून्य से बढ़ते क्रम में हैं।
- मान विरल हो सकते हैं (यानी, एक दूसरे से सटे हुए नहीं)।
एससीआई कैरेक्टर काउंट काउंट द्वारा सबसे अधिक ट्रिक कोड जीतता है, लेकिन मुझे किसी विशेष भाषा के लिए सुरुचिपूर्ण समाधान देखने में भी दिलचस्पी है।
परीक्षण के मामलों
सरल युक्त सरणियों के लिए आउटपुट 1
के लिए n
विभिन्न के लिए n
। जैसा कि ऊपर वर्णित है, अनुगामी 0
एस वैकल्पिक हैं।
[]
[1]
[2,1,0]
[2,1,3]
[3,2,4,1,0,0,0]
[4,2,5,1,3,0,0]
[4,2,6,1,3,5,0]
[4,2,6,1,3,5,7]
[5,3,7,2,4,6,8,1,0,0,0,0,0,0,0]
[6,4,8,2,5,7,9,1,3,0,0,0,0,0,0]
[7,4,9,2,6,8,10,1,3,5,0,0,0,0,0]
[8,4,10,2,6,9,11,1,3,5,7,0,0,0,0]
[8,4,11,2,6,10,12,1,3,5,7,9,0,0,0]
[8,4,12,2,6,10,13,1,3,5,7,9,11,0,0]
[8,4,12,2,6,10,14,1,3,5,7,9,11,13,0]
[8,4,12,2,6,10,14,1,3,5,7,9,11,13,15]