• fucking algorithm


    迭代可以 o(1) 的空间复杂度,o(n) 的时间复杂度,翻转链表。

    k个一组翻转链表:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/

    还是可以看做递归问题,每次返回的是新的head,通过 head.next 递归调用下一个翻转组。

    base case 就是停下来的时候,在本题中就是不足 k个的一组。

    首先考虑迭代翻转整个链表

    def reverseList(head):

         tail = None

         while head.next is not None:

        tmp = head.next

        head.next = tail

        tail = head

        head = tmp

      return head

    反转整个链表 = 反转 a 到 null 的节点。

    所以也会了反转 a 到 b 的节点。

    def reverseList(head, b):  // 左闭右开!

      newHead = None

          cur = head

          while cur != b:

        tmp = cur.next

        cur.next = newHead

        newHead = cur

        cur = tmp

      return newHead

    那么 reverseKGroup 就是先遍历 k 个,如果不足 k 个直接返回即可。

  • 相关阅读:
    vue seven day
    vue six day
    vue five day
    vue four day
    vue three day
    vue two day
    vue one day
    leetcode105-Golang根据前序遍历与中序遍历构建二叉树
    配置树莓派的frp反向代理与supervisor进程守护与开机自启脚本
    Golang实现二分查找算法
  • 原文地址:https://www.cnblogs.com/toonice/p/14651031.html
Copyright © 2020-2023  润新知