zoukankan      html  css  js  c++  java
  • 725. 分隔链表






    方法一:

    class Solution(object):
        def splitListToParts(self, root, k):
            """
            :type root: ListNode
            :type k: int
            :rtype: List[ListNode]
            """
            # 题目说了,头结点是root,不是首节点
            cur = root
            # 统计原链表的长度
            length = 0
            while cur:
                length += 1
                cur = cur.next
            # 平均长度
            avelen = int(length / k)
            # 余数
            extra = length % k
            # 结果中应有extra个长为avalen+1的链表,k-extra个长为avalen的链表。
            nodeList = []
    
            """先截取extra个长度为avelen + 1的链表"""
            avelen += 1
            while extra > 0:
                # 每趟循环前记录头指针
                head = root
                pre = None
                for i in range(avelen):
                    pre = root
                    root = root.next
                pre.next = None
                nodeList.append(head)
                extra -= 1
    
            """再截取k-extra个长度为avelen的链表"""
            k = k - (length % k)
            avelen -= 1
            if avelen == 0:
                while k > 0:
                    nodeList.append(None)
                    k -= 1
            while k > 0:
                if root:
                    head = root
                    pre = None
                    for i in range(avelen):
                        pre = root
                        root = root.next
                    pre.next = None
                    nodeList.append(head)
                else:
                    nodeList.append(None)
                k -= 1
            return nodeList
    
  • 相关阅读:
    表单提交
    后台返回来的数据是字符串
    背景图充满屏幕
    微信小程序添加模板消息
    axios
    前端常见的跨域解决方案
    gulp的压缩
    git的使用步骤
    vue项目使用mint UI
    利用HBuilder将vue项目打包成移动端app
  • 原文地址:https://www.cnblogs.com/panweiwei/p/12900159.html
Copyright © 2011-2022 走看看