Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số nguyên làm đối số duy nhất.
Hàm sẽ xác định xem có tồn tại bất kỳ cách nào mà chúng ta có thể chia mảng thành hai mảng con sao cho tổng các phần tử có trong hai mảng con bằng nhau. Chia nhỏ các phần tử thành các mảng con, chúng ta phải đảm bảo rằng không còn phần tử nào từ mảng ban đầu.
Ví dụ -
Nếu mảng đầu vào là -
const arr = [5, 3, 7, 4, 1, 8, 2, 6];
Sau đó, đầu ra phải là -
const output = true;
bởi vì các mảng con mong muốn là:[5, 3, 4, 6] và [7, 1, 8, 2] với cả hai đều có tổng bằng 18.
Ví dụ
Sau đây là mã -
const arr = [5, 3, 7, 4, 1, 8, 2, 6]; const canPartition = (arr = []) => { const sum = arr.reduce((acc, val) => acc + val); if (sum % 2 !== 0){ return false; }; const target = sum / 2; const array = new Array(target + 1).fill(false); array[0] = true; for (const num of arr) { if (array[target - num]){ return true }; for (let i = target; i >= num; i--) { array[i] = array[i - num]; } } return false; }; console.log(canPartition(arr));
Đầu ra
Sau đây là đầu ra của bảng điều khiển -
true