lettCode

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k个位置。
提示:
链表中节点的数目在范围 [0, 500] 内
-100 <= Node.val <= 100
0 <= k <= 2 * 109
https://leetcode.cn/problems/rotate-list/

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    # head 为可选值或者None,若为可选值,其类型为Listnode
    def rotateRight(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
        # head 为 None,则直接返回
        if head is None:
            return head
        
        # 遍历链表获取其长度
        _len = 0
        tmpHead = head
        while tmpHead:
            _len += 1
            tmpHead = tmpHead.next

        #定义前后两个指针,初始化都指向链表头部
        # 由于K可能远大于链表的长度,所以先对K求模,得出真正需要移动的步骤为step
        former = later = head
        step = k % _len
        if step == 0:
            return head
        
        # 先移动step步前指针
        for i in range(step):
            former = former.next

        # 再同时移动前后指针,直到前指针已在链表尾节点
        while former and former.next:
            later = later.next
            former = former.next
        
        
        # 此时,链表从从 later指针处断开
        # 新链表的头部指向later+1 节点
        # 同时,链表尾节点为 later

        newHead = later.next
        later.next = None
        former.next = head

        return newHead
知识点

Optional:
官方原话:可选参数具有默认值,具有默认值的可选参数不需要在其类型批注上使用 Optional,因为它是可选的
不过 Optional 和默认参数其实没啥实质上的区别,只是写法不同
使用 Optional 是为了让 IDE 识别到该参数有一个类型提示,可以传指定的类型和 None,且参数是可选非必传的

Optional[int] 等价于 Union[int, None]
意味着:既可以传指定的类型 int,也可以传 None

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,167评论 1 32
  • DAY1 1480. 一维数组的动态和[https://leetcode.cn/problems/running-...
    alex很累阅读 483评论 0 0
  • to-do:看一下别人写的题解 https://github.com/981377660LMT/algorithm...
    winter_sweetie阅读 802评论 1 0
  • * Always remember to check the quality/availability of th...
    Morphiaaa阅读 750评论 0 0
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,268评论 30 472