จัดเรียงอาร์เรย์ที่มีแค่ 0 และ 1 ให้ 1 อยู่หน้า 0 อยู่หลัง
ตัวอย่าง
Input: [1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1] Output: [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
ตัวอย่างโค้ด
const arr = [1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1];
const sortBinary = arr => {
const copy = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] === 0) copy.push(0);
else copy.unshift(1); // 1 ใส่หน้า
}
return copy;
};
console.log(sortBinary(arr));
วิธีที่ดีกว่า
// นับจำนวน 1 แล้วสร้างอาร์เรย์ใหม่
const sortBinary = arr => {
const ones = arr.filter(x => x === 1).length;
return [...Array(ones).fill(1), ...Array(arr.length - ones).fill(0)];
};
// หรือใช้ sort
const sortBinary = arr => [...arr].sort((a, b) => b - a);
ผลลัพธ์
[ 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 ]