• 模拟卷Leetcode【普通】061. 旋转链表


    汇总:模拟卷Leetcode 题解汇总

    061. 旋转链表

    给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

    示例 1:

    输入:head = [1,2,3,4,5], k = 2
    输出:[4,5,1,2,3]
    示例 2:

    输入:head = [0,1,2], k = 4
    输出:[2,0,1]

    提示:

    链表中节点的数目在范围 [0, 500] 内
    -100 <= Node.val <= 100
    0 <= k <= 2 * 109

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/rotate-list
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    代码:

    from leetcode_python.utils import *
    
    k=1
    nums = [1,3,4,5]
    print(nums[-k:],nums[:-k])
    nums = nums[-k:]+nums[:k+1]
    print(nums)
    
    def List2Node(datas:List)->ListNode:
        """列表 -> 链表"""
        hair = ListNode(None)
        head = hair
        for data in datas:
             head.next = ListNode(data)
             head = head.next
        return hair.next
    def Node2List(head:ListNode)->List:
        """链表 -> 列表"""
        res = []
        while head:
            res.append(head.val)
            head = head.next
        return res
    class Solution:
        def rotateRight(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
            if not head or k==0:return head
            nums = Node2List(head)
            if len(nums)==1:return head
            k %= len(nums)
            nums = nums[-k:]+nums[:-k]
            return List2Node(nums)
    
    
    def test(data_test):
        s = Solution()
        data = data_test    # normal
        # data = [List2Node(data_test[0])]  # list转node
        return s.getResult(*data)
    
    def test_obj(data_test):
        result = [None]
        obj = Solution(*data_test[1][0])
        for fun,data in zip(data_test[0][1::],data_test[1][1::]):
            if data:
                res = obj.__getattribute__(fun)(*data)
            else:
                res = obj.__getattribute__(fun)()
            result.append(res)
        return result
    
    if __name__ == '__main__':
        datas = [
            [],
        ]
        for data_test in datas:
            t0 = time.time()
            print('-'*50)
            print('input:', data_test)
            print('output:', test(data_test))
            print(f'use time:{time.time() - t0}s')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    备注:
    GitHub:https://github.com/monijuan/leetcode_python

    CSDN汇总:模拟卷Leetcode 题解汇总

    可以加QQ群交流:1092754609

    leetcode_python.utils详见汇总页说明
    先刷的题,之后用脚本生成的blog,如果有错请留言,我看到了会修改的!谢谢!

  • 相关阅读:
    Kotlin协程之Dispatchers原理
    什么是Mybatis?Mybaits有哪些优点?
    Linux应用程序崩溃了怎么定位?
    【通览一百个大模型】Baize(UCSD)
    Koa.js搭建简单服务器,连接数据库
    我的创作纪念日
    马尔科夫链(Markov Chain, MC)算法详解及Python实现
    Vue系列之数组更新检测
    【微服务】SpringCloud微服务续约源码解析
    【数据密集型系统设计】软件系统的可靠性、可伸缩性、可维护性
  • 原文地址:https://blog.csdn.net/qq_34451909/article/details/126039048