給定乙個頭結點為 root 的鍊錶, 編寫乙個函式以將鍊錶分隔為 k 個連續的部分。== 舉例: 1->2->3->4, k = 5 // 5 結果 [ [1], [2], [3], [4], null ]==每部分的長度應該盡可能的相等: 任意兩部分的長度差距不能超過 1,也就是說可能有些部分為 null。
這k個部分應該按照在鍊錶中出現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。
返回乙個符合上述規則的鍊錶的列表。
示例 1:
-輸入:root = [1, 2, 3], k = 5
輸出: [[1],[2],[3],,]
解釋:輸入輸出各部分都應該是鍊錶,而不是陣列。
例如, 輸入的結點 root 的 val= 1, root.next.val = 2, \root.next.next.val = 3, 且 root.next.next.next = null。
第乙個輸出 output[0] 是 output[0].val = 1, output[0].next = null。
最後乙個元素 output[4] 為 null, 它代表了最後乙個部分為空鍊錶。
示例 2:
輸入:我們先對給定的鍊錶求長度,然後除以k,會得到乙個商和餘數,商的數值代表平均分為k段之後每段有多少個節點,餘數的數值代表前多少段需要多加乙個節點,商和餘數總共有以下幾個情況:root = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], k = 3
輸出: [[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]
解釋:輸入被分成了幾個連續的部分,並且每部分的長度相差不超過1.前面部分的長度大於等於後面部分的長度。
# definition for singly-linked list.
# class listnode(object):
# def __init__(self, x):
# self.val = x
# self.next = none
class
solution
(object):
defsplitlisttoparts
(self, root, k)
:"""
:type root: listnode
:type k: int
:rtype: list[listnode]
"""count =
0 p= root
node =
while p:
count +=
1 p =p.
next
num = count/k
re= count %k
for i in
range
(k):
head = listnode(0)
p = head
for j in
range
(num)
: nodes = listnode(root.val)
p.next
= nodes
p = p.
next
root = root.
next
if re and root:
rnode = listnode(root.val)
p.next
= rnode
if root:
root = root.
next
re -=
1next
)return node
LeetCode 725 分隔鍊錶
給定乙個頭結點為 root 的鍊錶,編寫乙個函式以將鍊錶分隔為 k 個連續的部分。每部分的長度應該盡可能的相等 任意兩部分的長度差距不能超過 1,也就是說可能有些部分為 null。這k個部分應該按照在鍊錶 現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。返回乙個符合上述規則的鍊錶...
LeetCode 725 分隔鍊錶
給定乙個頭結點為 root 的鍊錶,編寫乙個函式以將鍊錶分隔為 k 個連續的部分。每部分的長度應該盡可能的相等 任意兩部分的長度差距不能超過 1,也就是說可能有些部分為 null。這k個部分應該按照在鍊錶 現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。返回乙個符合上述規則的鍊錶...
Leetcode 725 分隔鍊錶 C
給定乙個頭結點為 root 的鍊錶,編寫乙個函式以將鍊錶分隔為 k 個連續的部分。每部分的長度應該盡可能的相等 任意兩部分的長度差距不能超過 1,也就是說可能有些部分為 null。這k個部分應該按照在鍊錶 現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。返回乙個符合上述規則的鍊錶...