题目:
给你一个链表的头节点
head
,旋转链表,将链表每个节点向右移动k
个位置。来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
示例:
示例 1:
输入:head = [1,2,3,4,5], k = 2
输出:[4,5,1,2,3]
示例 2:
输入:head = [0,1,2], k = 4
输出:[2,0,1]
解法:
使用列表内置函数pop和insert解决。
知识点:
1.range(start,stop[,step]):返回一个range类型的整数序列。start表示计数起始位置,默认值为0;stop表示计数终点位置,开区间;step表示步长,默认值为1。
2.list.insert( index, obj ):index表示索引位置,必选;obj表示需要插入的对象,可选。将指定对象插入列表的指定位置。
代码:
# 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: Optional[ListNode], k: int) -> Optional[ListNode]:result = []while head is not None:result.append(head.val)head = head.nextif len(result) == 0:return Nonefor _ in range(k % len(result)):result.insert(0, result.pop())head = point = ListNode(-101)for num in result:node = ListNode(num)point.next = nodepoint = nodereturn head.next