Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Khớp chỉ số chẵn/lẻ với giá trị chẵn/lẻ trong JavaScript

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số. Mảng đầu vào có hai đặc tính đặc biệt:

  • Độ dài mảng luôn là số chẵn.
  • Số lượng số chẵn và số lẻ trong mảng luôn bằng nhau (cả hai bằng một nửa độ dài mảng).

Hàm nên sắp xếp lại các phần tử của mảng sao cho tất cả các giá trị chẵn chiếm các chỉ số chẵn và tất cả các giá trị lẻ chiếm các chỉ số lẻ.

Lưu ý rằng có thể có nhiều hơn một giải pháp đúng, chúng ta chỉ cần tìm một trong số chúng.

Ví dụ

Dưới đây là mã nguồn:

const arr = [1, 2, 3, 4, 5, 6]; const arrangeToIndices = (arr = []) => {    let [even, odd] = [0, 1];    while (even < arr.length && odd < arr.length) {       if (arr[even] % 2 === 1 && arr[odd] % 2 === 0) {          [arr[even], arr[odd]] = [arr[odd], arr[even]];          [even, odd] = [even + 2, odd + 2];       } else {          if (0 === arr[even] % 2){             even += 2;          };          if (1 === arr[odd] % 2){             odd += 2          };       };    };    return arr; }; console.log(arrangeToIndices(arr));

Kết quả

Đầu ra trên console:

[ 2, 1, 4, 3, 6, 5 ]

Giải thích: Two-pointer approach O(n) time, O(1) space. Con trỏ even duyệt chỉ số chẵn, odd duyệt chỉ số lẻ. Khi thấy sai chỗ (chẵn ở lẻ, lẻ ở chẵn) thì swap.