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

Mảng nhóm JavaScript - tìm các tập hợp số có thể được chuyển đến bằng cách sử dụng các cạnh được xác định

Hãy xem xét các mảng đầu vào và đầu ra sau -

const input = ["0:3", "1:3", "4:5", "5:6", "6:8"]; const output = [
   [0, 1, 3],
   [4, 5, 6, 8]
];

Xem xét mỗi số là một nút trong biểu đồ và mỗi cặp x:y như một cạnh giữa các nút x và y, chúng tôi bắt buộc phải tìm các bộ số có thể được di chuyển đến bằng cách sử dụng các cạnh được xác định.

Nghĩa là, theo thuật ngữ lý thuyết đồ thị, hãy tìm các thành phần được kết nối riêng biệt trong một đồ thị như vậy. từ 1 đến 0 (theo cách 3) để chúng thuộc cùng một nhóm. "Để nhắc lại đầu ra mong muốn là một nhóm các nút có thể chuyển đổi, dựa trên một tập hợp đầu vào ngẫu nhiên có khả năng xảy ra.

Chúng tôi được yêu cầu viết một hàm JavaScript để tạo đầu ra mong muốn từ đầu vào đã cho.

Ví dụ

const input = ["0:3", "1:3", "4:5", "5:6", "6:8"];
const groupRange = (arr = []) => {
   const res = [[]];
   let count = 0;
   const a = [0];
   let array = arr.map(el => el.split(':').sort((a, b) => a - b)). sort((a, b) => a[0] - b[0]); array.forEach(el => {
      if (el[0] > a[a.length - 1]) {
         res.push(el);
          a.push(el[1]);
         count++;
      } else {
         res[count] = res[count].concat(el);
         a[a.length - 1] = el[1];
      };
   });
   return res.map(el => [...new Set(el)].sort((a, b) => a - b));
}
console.log(groupRange(input));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[ [ '0', '1', '3' ], [ '4', '5', '6', '8' ] ]