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

Đếm cấp số cộng có thể có trong mảng trong JavaScript

Cấp số cộng

Cấp số cộng (AP) là dãy số sao cho hiệu của hai số liên tiếp bất kỳ là một giá trị hằng (còn gọi là công sai). Ví dụ: 1, 2, 3, 4, 5, 6... là AP với công sai 1.

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số nguyên arr làm đối số duy nhất. Nhiệm vụ là trả về số lượng cấp số cộng có kích thước 3 có thể tạo từ danh sách đó. Trong mỗi cấp số cộng, hiệu giữa các phần tử phải giống nhau. Đảm bảo mảng đầu vào đã được sắp xếp tăng dần.

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

Đầu vào

const arr = [1, 2, 3, 5, 7, 9];

Đầu ra

const output = 5;

Giải thích

Các AP mong muốn là: [1,2,3], [1,3,5], [1,5,9], [3,5,7] và [5,7,9].

Ví dụ

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

const arr = [1, 2, 3, 5, 7, 9];
const countAP = (arr = []) => {
  let i, j, k;
  let { length: len } = arr;
  let count = 0;
  for (i = 0; i < len - 2; i++) {
    for (k = i + 2; k < len; k++) {
      let temp = arr[i] + arr[k];
      let div = temp / 2;
      if ((div * 2) == temp) {
        for (j = i + 1; j < k; j++) {
          if (arr[j] == div) {
            count += 1;
          }
        }
      }
    }
  }
  return count;
};
console.log(countAP(arr));

Kết quả

5