সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম এবং একমাত্র আর্গুমেন্ট হিসাবে সংখ্যার একটি অ্যারে নেয়।
অ্যারে অ্যারে, সবসময় সমান দৈর্ঘ্যের হবে।
আমাদের ফাংশনটি সত্য হওয়া উচিত যদি এবং শুধুমাত্র যদি এটিকে পুনরায় সাজানো সম্ভব হয় যাতে arr[2 * i + 1] =2 * arr[2 * i] প্রতি 0 <=i
উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −
তারপর আউটপুট −
আমরা দুটি দল নিয়ে যেতে পারি, [-2,-4] এবং [2,4] গঠন করতে [-2,-4,2,4] বা [2,4,-2,-4]।
এর জন্য কোড হবে −
এবং কনসোলে আউটপুট হবে −const arr = [4, -2, 2, -4];
const output = true;
আউটপুট ব্যাখ্যা
উদাহরণ
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