Python中链表的最长连续递增序列查找方法
链表的最长连续递增序列查找方法可以通过遍历链表,记录当前递增序列的起始节点和长度,比较当前节点和前一个节点的大小关系来更新最长连续递增序列的起始节点和长度。
具体实现如下:
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。
相关文章