在 JavaScript 中计算数组中可能存在的 AP
算术级数
算术级数 (AP) 是这样的数字序列,其中任意两个相邻数字的差值是一个常量(又称为公差)。
例如,1, 2, 3, 4, 5, 6,… 是一个 AP,它的公差等于 1 (2 -1)。
问题
我们编写一个 JavaScript 函数,它将数组整数 arr 作为第一个且唯一参数接收。
我们的函数任务是返回该列表中可能形成的、大小为 3 的算术级数的数量,每个级数中各项之间的差值必须相同。列表中元素是有序的,从小到大排列。例如,如果输入函数的是
例如,如果输入函数的是 −
输入
const arr = [1, 2, 3, 5, 7, 9];
输出
const output = 5;
输出说明
因为满足要求的 AP 为 −
[1, 2, 3], [1, 3, 5], [1, 5, 9], [3, 5, 7] and [5, 7, 9]
示例
以下是代码 −
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));
输出
5
广告