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

Tìm chỉ số trung vị của mảng trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng arr đại diện cho vị trí của các tiểu hành tinh trong không gian một chiều. Với mỗi tiểu hành tinh, giá trị tuyệt đối đại diện cho kích thước, dấu đại diện cho hướng (dương nghĩa là phải, âm nghĩa là trái). Mỗi tiểu hành tinh di chuyển với tốc độ như nhau.

Hàm phải tìm trạng thái của tiểu hành tinh sau tất cả va chạm. Nếu hai tiểu hành tinh gặp nhau, cái nhỏ hơn sẽ nổ. Nếu cùng kích thước, cả hai nổ. Hai tiểu hành tinh cùng hướng không bao giờ gặp nhau.

Ví dụ, nếu đầu vào là:

Đầu vào

const arr = [1, 7, 3, 6, 5, 6];

Đầu ra

const output = 3;

Giải thích

Tổng các số bên trái chỉ số 3 (nums[3] = 6) bằng tổng các số bên phải chỉ số 3. Cũng là chỉ số đầu tiên mà điều này xảy ra.

Ví dụ

Dưới đây là mã thực hiện:

const arr = [1, 7, 3, 6, 5, 6];
const medianIndex = (arr = []) => {
  let sum = arr.reduce((acc, num) => acc + num, 0);
  let currentSum = 0;
  for (let i = 0; i < arr.length; i++) {
    currentSum += (arr[i - 1] || 0);
    sum -= arr[i];
    if (currentSum === sum) {
      return i;
    }
  }
  return -1;
};
console.log(medianIndex(arr));

Kết quả

3