পূর্ণসংখ্যার একটি অনন্য, বাছাই করা তালিকা দেওয়া হয়েছে, পুনরাবৃত্তি না করে একটি অ্যারে হিসাবে উপস্থাপিত একটি ভারসাম্য বাইনারি-অনুসন্ধান গাছ তৈরি করুন।
উদাহরণ স্বরূপ:
func( [1,2,3,5,8,13,21] ) => [5,2,13,1,3,8,21]
আমরা শুরু করার আগে, একটি ইঙ্গিত: আমরা এই সমস্যাটি এক টন আরও সহজ করতে পারি যাতে আমাদের আসলে ইনপুট পূর্ণসংখ্যাগুলি (বা matter বিষয়টির জন্য কোনও তুলনামূলক অবজেক্ট!) সম্পর্কে ভাবতে হবে না।
আমরা যদি জানতে পারি যে ইনপুট তালিকাটি ইতিমধ্যে সাজানো হয়েছে তবে এর সামগ্রীগুলি অপ্রাসঙ্গিক। মূল অ্যারেতে সূচকগুলির ক্ষেত্রে আমরা কেবল এটি সম্পর্কে ভাবতে পারি।
ইনপুট অ্যারের অভ্যন্তরীণ উপস্থাপনা তখন হয়:
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
গুলি al চ্ছিক।
[]
[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]