在单链表和双链表中删除倒数第K个节点
生活随笔
收集整理的这篇文章主要介绍了
在单链表和双链表中删除倒数第K个节点
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目:分别实现两个函数,一个可以删除单链表中倒数第k个节点,另一个可以删除双链表中倒数第k个节点
要求:如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)
"""单链表"""class Node:def __init__(self,value):self.value = valueself.next = Nonedef removeLastKth(head,k):if head == None or k<1:return headcur = headwhile cur!=None:k-=1cur = cur.nextif k == 0:head = head.nextelif k < 0:cur = headwhile k+1!=0:k = k+1cur = cur.nextcur.next = cur.next.nextreturn head """双链表""" class DoubleNode:def __init__(self,val):self.val = valself.next = Noneself.pre = Nonedef removeLastKth(self,k):if head == None or k < 1:return headcur = headwhile cur!=None:k -=1cur = cur.nextif k == 0:head = head.nexthead.pre = Noneelif k < 0:cur = headwhile k!=0:k +=1cur = cur.nextcur.next = cur.next.nextif cur.next!=None:cur.next.pre = curreturn head
总结
以上是生活随笔为你收集整理的在单链表和双链表中删除倒数第K个节点的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 矩阵的最小路径和
- 下一篇: 删除链表的中间节点和a/b处的节点