সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি সংখ্যা অ্যারে (arr) নেবে। অ্যারে-র দৈর্ঘ্য সর্বদা জোড় হবে। ফাংশনটি true রিটার্ন করবে যদি এবং কেবল যদি অ্যারে-কে এমনভাবে রি-অর্ডার করা যায় যেন arr[2*i + 1] = 2 * arr[2*i] হয় সব 0 <= i < length(arr)/2 এর জন্য।
উদাহরণস্বরূপ, ইনপুট যদি হয় –
const arr = [4, -2, 2, -4];
তবে আউটপুট হবে –
const output = true;
আউটপুট ব্যাখ্যা
আমরা দুটি গ্রুপ নিতে পারি, [-2,-4] এবং [2,4] থেকে [-2,-4,2,4] বা [2,4,-2,-4] বানাতে।
উদাহরণ
কোডটি নিচের মতো –
const arr = [4, -2, 2, -4]; const canRearrange = (arr = []) => { const map = arr.reduce((acc, num) => { acc[num] = (acc[num] || 0) + 1; return acc; }, {}); const keys = Object.keys(map).map(key => Number(key)).sort((a, b) => a - b); for (const key of keys) { if (key < 0) { while (map[key] > 0) { if (map[key / 2] > 0) { map[key] -= 1; map[key / 2] -= 1; } else { return false; } } } else { while (map[key] > 0) { if (map[key * 2] > 0) { map[key] -= 1; map[key * 2] -= 1; } else { return false; } } } } return true; }; console.log(canRearrange(arr));আউটপুট
কনসোলে আউটপুট হবে –
true