LeetCode:61.旋转链表(python3)
Posted 南岸青栀*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:61.旋转链表(python3)相关的知识,希望对你有一定的参考价值。
61.旋转链表
法1:合环解环法
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def rotateRight(self, head: ListNode, k: int) -> ListNode:
#特殊条件判断
if head == None: return head
cur = head
l = 1
#循环,用于找到尾指针和统计链表长度
while cur.next:
l += 1
cur = cur.next
#将链表连接成环
cur.next = head
#计算需要移动的次数,当k对链表长度取余
#当前位置在尾指针,需要移动的次数就是l-k
l = l - k % l
for i in range(l):
cur = cur.next
#记录头部节点
res = cur.next
#将环打断
cur.next = None
return res
82. 删除排序链表中的重复元素 II
思路:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
#如果链表为空
if not head:
return head
#构建一个节点,使其连接到目标节点;因为会出现头结点为重复数字的情况
cur = ListNode(-1,head)
tmp = cur
while tmp.next and tmp.next.next:
#如果存在重复数字,将该数字记录,然后当出现相同数字的时候将其跳过
if tmp.next.val == tmp.next.next.val:
x = tmp.next.val
while tmp.next and tmp.next.val == x:
tmp.next = tmp.next.next
#如果没有重复数字,说明当前正常
else:
tmp = tmp.next
return cur.next
以上是关于LeetCode:61.旋转链表(python3)的主要内容,如果未能解决你的问题,请参考以下文章