1.分式化简
题目:
有一个同学在学习分式。他需要将一个连分数化成最简分数,你能帮助他吗?
连分数是形如上图的分式。在本题中,所有系数都是大于等于0的整数。
输入的cont代表连分数的系数(cont[0]代表上图的a0,以此类推)。返回一个长度为2的数组[n, m],使得连分数的值等于n / m,且n, m最大公约数为1。
思路:通分,然后反转分子和分母
/**
* @param {number[]} cont
* @return {number[]}
*/
var fraction = function(cont) {
const l = cont.length;
if (l < 2) return [cont[0], 1];
let v1 = 1,
v2 = cont[l - 1];
for (let i = cont.length - 2; i >= 0; i--) {
[v1, v2] = [v2, cont[i] * v2 + v1];
}
return [v2, v1];
};
2.拿硬币
题目:桌上有 n
堆力扣币,每堆的数量保存在数组 coins
中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。
思路:除以2向上取整
/**
* @param {number[]} coins
* @return {number}
*/
var minCou