📅  最后修改于: 2023-12-03 15:22:49.682000             🧑  作者: Mango
如果你在处理单链接列表,并且想要计算其中所有斐波那契节点的总和和乘积,那么你就来对地方了!
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def is_fibonacci(n):
a, b = 0, 1
while b < n:
a, b = b, a + b
return b == n
def fibonacci_sum_product(head):
fibonacci_nums = []
curr = head
while curr:
if is_fibonacci(curr.val):
fibonacci_nums.append(curr.val)
curr = curr.next
if not fibonacci_nums:
return 0, 0
else:
total_sum = sum(fibonacci_nums)
total_product = functools.reduce((lambda x, y: x * y), fibonacci_nums)
return total_sum, total_product
假设我们有以下单链接列表:
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(5)
head.next.next.next.next = ListNode(8)
head.next.next.next.next.next = ListNode(13)
head.next.next.next.next.next.next = ListNode(21)
我们可以调用 fibonacci_sum_product
函数来计算该列表中所有斐波那契节点的总和和积:
print(fibonacci_sum_product(head)) # (47, 1247400)
现在你拥有了一个能够计算单链接列表中所有斐波那契节点的总和和积的函数。当你需要处理类似的数据时,这个函数可以派上用场。