leetcode 合并两个有序链表 python3

    技术2022-07-11  81

    这里主要用了递归的思想,刚开始的时候,首先 l1 和 l2 做了一个判断为空的处理。接着判断 l1 和 l2 的值,如果 l2 的值大与 l1 的值,就直接递归 l1 的 next 和 l2 ,反正只要有递归的思想,看着就挺好理解的。 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: if not l1: return l2 elif not l2: return l1 elif l1.val < l2.val: l1.next = self.mergeTwoLists(l1.next, l2) return l1 else: l2.next = self.mergeTwoLists(l1, l2.next) return l2 方法二: 当一个列表为空时,停止循环,然后在单独判断,将不为空的链表接到返回列表后面 class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: node=ListNode(0) l=node while l1 and l2: if l1.val<=l2.val: x=ListNode(l1.val) l1=l1.next else: x=ListNode(l2.val) l2=l2.next l.next=x l=l.next l.next=l1 if l1!=None else l2 return node.next class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: res = pre = ListNode(0) while l1 and l2: if l1.val < l2.val: pre.next = l1 l1 = l1.next else: pre.next = l2 l2 = l2.next pre = pre.next pre.next = l1 or l2

    转载:https://blog.csdn.net/weixin_44740082/article/details/100787157

    原文链接:https://blog.csdn.net/bi_diu1368/article/details/96995559

    ListNode list=new ListNode(0) 初始化一个节点值为0的空节点,最常用最正规写法

    struct ListNode { int val; //定义val变量值,存储节点值 struct ListNode *next; //定义next指针,指向下一个节点,维持节点连接 }

    · 在节点ListNode定义中,定义为节点为结构变量。 · 节点存储了两个变量:value 和 next。value 是这个节点的值,next 是指向下一节点的指针,当 next 为空指针时,这个节点是链表的最后一个节点。 · 注意val只代表当前指针的值,比如p->val表示p指针的指向的值;而p->next表示链表下一个节点,也是一个指针。 · 构造函数包含两个参数 _value 和 _next ,分别用来给节点赋值和指定下一节点

    Processed: 0.016, SQL: 9