链表不具有的特点是( ),链表反转

  链表不具有的特点是( ),链表反转

  1.合并两个有序链表,纽克

  力扣

  将两个升序列表合并成一个新的升序列表并返回。通过拼接给定的两个链表的所有节点来形成新的链表。

  示例1:

  输入:l1=[1,2,4],l2=[1,3,4]

  产出:[1,1,2,3,4,4]

  输入:l1=[],l2=[]

  输出:[]

  输入:l1=[],l2=[0]

  输出:[0]

  解决方案:

  哨兵的作用是方便的得到最后一个链表,也就是一个虚拟头节点。

  从键入导入可选

  类别列表节点:

  def __init__(self,val=0,next=None):

  self.val=val

  self.next=下一个

  类别解决方案:

  def mergetwolits(self,list1:可选[ListNode],list2:可选[ListNode]) -可选[ListNode]:

  #设置前哨节点(虚拟头节点),将较小的节点连接到这个前哨节点,最后返回prehead.next

  preHead=ListNode(-1)

  Pre=preHead # pre指针,用于连接链表(指针或光标)

  l1=列表1

  l2=列表2

  而l1和l2:

  #将具有较小值的节点连接到pre指针

  如果l1.val l2.val:

  pre.next=l1

  l1=l1 .下一个

  否则:

  pre.next=l2

  l2=l2 .下一个

  Pre=pre.next #节点移动

  如果l1:

  pre.next=l1

  如果l2:

  pre.next=l2

  返回preHead .下一个

  参考:3359blog.csdn.net/weixin _ 4346639/文章/详情/124000412

  2.移除链接列表元素

  23.移除链接列表元素。

  给你一个链表的头节点和一个整型值。请删除链表中所有满足Node.val==val的节点,返回新的头节点。

  示例1:

  输入:head=[1,2,6,3,4,5,6],val=6

  产出:[1,2,3,4,5]

  示例2:

  输入:head=[],val=1

  输出:[]

  示例3:

  输入:head=[7,7,7,7],val=7

  输出:[]

  列表中的节点数在[0,104]范围内

  1=节点值=50

  0=val=50

  解决方案:

  #单链表的定义。

  #类别列表节点:

  # def __init__(self,val=0,next=None):

  # self.val=val

  # self.next=下一个

  类别解决方案:

  def removeElements(self,head: ListNode,val: int) - ListNode:

  Dummy=ListNode(next=head) #虚拟头节点或哨兵节点,其下一个节点指向头头节点。

  Cur=dummy #相当于一个光标或者指针,一直在移动。

  下一个!=无:

  if cur.next.val==val:

  Cur.next=Cur.next.next #如果等于目标元素,则指向cur。下一个节点的下一个,然后移除该节点。

  否则:

  下一个

  返回假人,下一个

  3.反转链表

  26.反转链表

  给你单链表的头节点,请倒链表,返回倒链表。

  示例1:

  输入:head=[1,2,3,4,5]

  输出:[5,4,3,2,1]

  示例2:

  Input: head=[1,2]

  输出:[2,1]

  示例3:

  Input: head=[]

  输出:[]

  提示:

  链表中节点的数量范围是[0,5000]

  -5000=节点. val=5000

  问题1:双指针

  #单链表的定义。

  #类别列表节点:

  # def __init__(self,val=0,next=None):

  # self.val=val

  # self.next=下一个

  类别解决方案:

  def reverseList(self,head: ListNode) - ListNode:

  Cur=head #头节点

  Pre=None #上一个节点,最初为空

  一边诅咒!=无:

  Tmp=cur.next #保存下一个节点

  Cur.next=pre #反转,下一个节点指向上一个节点。

  #更新节点

  Pre=cur #移动

  Cur=tmp #移动,相当于cur=cur.next

  Return pre # pre最终会移动到最后一个节点,所以只需返回pre。

  问题2:递归方法

  类别解决方案:

  def reverseList(self,head: ListNode) - ListNode:

  定义反转(前,当前):

  如果不弯曲:

  返回前

  tmp=cur.next

  cur.next=pre

  反向返回(电流、温度)

  反向返回(无,头)

  参考:翻转链接列表

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: