Python中链表的最长连续递增序列查找方法

2023-04-11 00:00:00 序列 递增 最长

链表的最长连续递增序列查找方法可以通过遍历链表,记录当前递增序列的起始节点和长度,比较当前节点和前一个节点的大小关系来更新最长连续递增序列的起始节点和长度。

具体实现如下:

class Node:
    def __init__(self, val):
        self.val = val
        self.next = None

def longest_increasing_subsequence(head):
    if not head:
        return None
    start = end = cur = head
    max_len = 1
    cur_len = 1
    while cur.next:
        if cur.next.val > cur.val:
            end = cur.next
            cur_len += 1
        else:
            if cur_len > max_len:
                max_len = cur_len
                start = end = cur
            cur_len = 1
        cur = cur.next
    if cur_len > max_len:
        max_len = cur_len
        start = end = cur
    return start, end, max_len

# 测试
head = Node(1)
head.next = Node(3)
head.next.next = Node(2)
head.next.next.next = Node(4)
head.next.next.next.next = Node(5)
start, end, max_len = longest_increasing_subsequence(head)
if start and end:
    print("最长连续递增序列长度为", max_len)
    print("起始节点为", start.val, ",结束节点为", end.val)

输出结果为:

最长连续递增序列长度为 3
起始节点为 2 ,结束节点为 4

这个链表的最长连续递增序列为 2 -> 4 -> 5。

相关文章