题目
给你一个链表的头 head ,每个结点包含一个整数值。
在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的 最大公约数 。
请你返回插入之后的链表。
两个数的 最大公约数 是可以被两个数字整除的最大正整数。
解题思路
直接用的数组,默认head是数组。
// 获取最大公约数
var getMax = function (a, b) {
return a % b === 0 ? b : getMax(b, a % b);
};
getMax(6, 18);
// 用来存放最大公约数
let stack = [];
var insertGreatestCommonDivisors = function (head) {
// 变量数组
for (let i = 0; i < head.length - 1; i++) {
const j = getMax(head[i], head[i + 1]);
stack.push(j);
}
for (let i = 0; i < stack.length; i++) {
// 公约数存放的位置是 2i+1
head.splice(2 * i + 1, 0, stack[i]);
}
};
insertGreatestCommonDivisors([18, 6, 10, 3, 9]);