本文共 1080 字,大约阅读时间需要 3 分钟。
为了将连分数转换为最简分数,我们从最右端开始处理每个系数,逐步向外扩展分子和分母。这种方法确保了我们正确地处理了每个层次的分式。
class Solution: def fraction(self, cont: List[int]) -> List[int]: if not cont: return [0, 1] numerator = cont[-1] denominator = 1 for i in range(len(cont) - 2, -1, -1): next_num = cont[i] * numerator + denominator next_den = numerator numerator, denominator = next_num, next_den return [numerator, denominator]
解决方法:我们的目标是将连分数转换为一个最简分数。连分数的形式通常为 a0 + 1/(a1 + 1/(a2 + ... + 1/an))
。为了将这个表达式转换为普通分数形式,我们可以从最右边的系数开始处理,每次扩展上一层的分子和分母。
初始化:
迭代处理:
a_i
,计算新的分子和分母: a_i * previous_numerator + previous_denominator
previous_numerator
示例:输入:cont = [3, 2, 0, 2]
处理步骤:
numerator = 2
, denominator = 1
[13, 4]
,即最简分数 13/4
。代码解释:
转载地址:http://uxpzk.baihongyu.com/