📅  最后修改于: 2023-12-03 14:54:29.056000             🧑  作者: Mango
在一个给定的链表中,找到最长的一对相邻节点,使得第一个节点是前一个链表而第二个是后一个链表。返回这两个节点。如果链表为空或只有一个节点,则返回null。
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def printMaxPair(head):
if not head or not head.next:
return None
node_vals = []
node = head
while node:
node_vals.append((node.val, len(node_vals)))
node = node.next
max_pair = None
for i in range(len(node_vals) - 1):
if node_vals[i+1][1] - node_vals[i][1] == 1:
pair = (node_vals[i][0], node_vals[i+1][0])
if not max_pair or node_vals[i+1][1] - node_vals[i][1] > max_pair[1][1] - max_pair[0][1]:
max_pair = (node_vals[i], node_vals[i+1])
return max_pair
输入:
head = ListNode(1)
head.next = ListNode(3)
head.next.next = ListNode(2)
head.next.next.next = ListNode(4)
输出:
(2, 4)