সমস্যা
ধরা যাক, আমাদের একটি সর্ট করা ২ডি অ্যারে আছে (ক্রমবর্ধমান ক্রমে) –
const arr = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15] ];
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসেবে এ ধরণের অ্যারে এবং دوم আর্গুমেন্ট হিসেবে একটি ইন্টিজার (num) নেবে। ফাংশনটি অ্যারে-এ num-তম সবচেয়ে ছোট এলিমেন্টটি রিটার্ন করবে।
উদাহরণস্বরূপ, ইনপুট যদি হয় –
const arr = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15] ]; const num = 5;
আউটপুট
তবে আউটপুট হবে –
const output = 11;
আউটপুট ব্যাখ্যা:
১১ হল ম্যাট্রিক্স-এ ৫ম সবচেয়ে ছোট এলিমেন্ট।
উদাহরণ
কোডটি নিচের মতো –
const arr = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15] ]; const num = 5; const kthSmallest = (arr = [], num = 1) => { let low = arr[0][0] let high = arr[arr.length-1][arr[0].length-1] + 1; while (low < high) { let mid = low + Math.floor((high-low)/2); let count = 0; for (let i = 0;iকোড ব্যাখ্যা:
এখানে বাইনারি সার্চের ধারণা ব্যবহার করা হয়েছে। ২ডি সর্ট করা অ্যারে-এ মিড ইন্ডেক্স খুঁজে বের করা কঠিন, তাই সংখ্যার রেঞ্জ ব্যবহার করে low এবং high নির্ধারণ করা হয়েছে। mid-এ কতগুলো সংখ্যা ছোট তা গণনা করে low-high অ্যাডজাস্ট করা হয়েছে।
আউটপুট
কনসোলে আউটপুট হবে –
11