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