সমস্যা
জাভাস্ক্রিপ্ট ফাংশন যা লিটারেলের একটি অ্যারে নিয়ে যায়, অ্যাআর, প্রথম এবং একমাত্র যুক্তি হিসাবে। এই অ্যারেতে কিছু সদৃশ রয়েছে যা সংলগ্নভাবে স্থাপন করা হয়েছে।
আমাদের ফাংশনের অ্যারের উপাদানগুলিকে এমনভাবে সাজানো উচিত যাতে অ্যারের কোনও দুটি উপাদান সমান না হয়। আমাদের ফাংশনটি পুনর্বিন্যাস করা অ্যারে ফেরত দেবে, এটি নিশ্চিত করা হয়েছে যে এই ধরনের ব্যবস্থার অন্তত একটি সম্ভাব্য উপায় আছে।
উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −
const arr = [7, 7, 7, 8, 8, 8];
তারপর আউটপুট −
হওয়া উচিতconst output = [7, 8, 7, 8, 7, 8];
আউটপুট ব্যাখ্যা:
এছাড়াও অন্যান্য সঠিক সম্ভাব্য পুনর্বিন্যাস হতে পারে।
উদাহরণ
এর জন্য কোড হবে −
const arr = [7, 7, 7, 8, 8, 8]; const rearrangeArray = (arr = []) => { const map = arr.reduce((acc, val) => { acc[val] = (acc[val] || 0) + 1 return acc; }, {}); const keys = Object.keys(map).sort((a, b) => map[a] - map[b]); const res = []; let key = keys.pop(); for(let i = 0; i < arr.length; i += 2){ if(map[key] <= 0){ key = keys.pop(); }; map[key] -= 1; res[i] = Number(key); }; for(let i = 1; i < arr.length; i += 2){ if(map[key] <= 0){ key = keys.pop(); }; map[key] -= 1; res[i] = Number(key); }; return res; }; console.log(rearrangeArray(arr));
আউটপুট
এবং কনসোলে আউটপুট হবে −
[ 8, 7, 8, 7, 8, 7 ]