Viết hàm sắp xếp mảng chỉ chứa 0 và 1: đưa tất cả 1 lên đầu, 0 xuống cuối.
Ví dụ
Đầu vào: [1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1]
Đầu ra: [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
Giải pháp
Mã triển khai (đếm số 1):
const arr = [1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1];
const sortBinary = arr => {
const count1 = arr.filter(x => x === 1).length;
return [...Array(count1).fill(1), ...Array(arr.length - count1).fill(0)];
};
console.log(sortBinary(arr));
Kết quả
Đầu ra trong console:
[1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
Cách khác: arr.sort((a,b) => b - a) hoặc two-pointer swap in-place O(n).