Computer >> Máy Tính >  >> Lập trình >> Javascript

Loại bỏ mảng con nhỏ nhất để làm cho tổng mảng có thể chia được trong JavaScript

Chúng tôi bắt buộc phải viết một hàm JavaScript nhận một mảng các số nguyên dương làm đối số đầu tiên và một số nguyên dương làm đối số thứ hai.

Hàm sẽ tìm ra và trả về độ dài của mảng con nhỏ nhất mà chúng ta nên xóa khỏi mảng ban đầu để làm cho tổng của nó chia hết cho số được chỉ định bởi đối số thứ hai.

Ví dụ -

Nếu đầu vào là -

const arr = [3, 8, 2, 6];
const num = 9;

Sau đó, đầu ra phải là -

const output = 2

Bởi vì mảng con cần được xóa là [8, 2]

Ví dụ

Sau đây là mã -

const arr = [3, 8, 2, 6];
const num = 9;
const minimumDeletion = (arr = [], num) => {
   const diff = arr.reduce((a, b) => a + b) % num;
   let res = diff == 0 ? 0 : arr.length;
   for (let i = 0, sum = 0, map = {0: -1}; i < arr.length; i++) {
      sum += arr[i];
      const target = (sum % num - diff + num) % num;
      if (map[target] != undefined) {
         res = Math.min(res, i - map[target]);
      };
      map[sum % num] = i;
   };
   return res == arr.length ? -1 : res;
};
console.log(minimumDeletion(arr, num));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

2