leetcode演算法練習 725 分隔鍊錶

2021-10-06 16:55:08 字數 1610 閱讀 9005

所有題目源**:git位址

題目

給定乙個頭結點為 root 的鍊錶, 編寫乙個函式以將鍊錶分隔為 k 個連續的部分。

每部分的長度應該盡可能的相等: 任意兩部分的長度差距不能超過 1,也就是說可能有些部分為 null。

這k個部分應該按照在鍊錶**現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。

返回乙個符合上述規則的鍊錶的列表。

舉例: 1

->2-

>3-

>

4, k =

5// 5 結果 [ [1], [2], [3], [4], null ]

示例 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:

輸入:

root =[1

,2,3

,4,5

,6,7

,8,9

,10], k =

3輸出:[[

1,2,

3,4]

,[5,

6,7]

,[8,

9,10]

]解釋:

輸入被分成了幾個連續的部分,並且每部分的長度相差不超過1.前面部分的長度大於等於後面部分的長度。

提示:root 的長度範圍: [0,

1000].

輸入的每個節點的大小範圍:[0,

999]

.k 的取值範圍: [1,

50].

方案:單鏈表
/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

int len = index / k;

int remain = index % k;

listnode[

] lists =

newlistnode

[k];

cur = root;

int tmp =1;

int i =0;

lists[0]

= root;

listnode tmpnode;

while

(cur != null)

else

}return lists;

}}

複雜度計算

leetcode演算法練習

1014.最佳觀光組合 給定正整數陣列 a,a i 表示第 i 個觀光景點的評分,並且兩個景點 i 和 j 之間的距離為 j i。一對景點 i j 組成的觀光組合的得分為 a i a j i j 景點的評分之和減去它們兩者之間的距離。返回一對觀光景點能取得的最高分。示例 輸入 8,1,5,2,6 輸...

leetcode演算法練習

1111.有效括號的巢狀深度 有效括號字串 定義 對於每個左括號,都能找到與之對應的右括號,反之亦然。詳情參見題末 有效括號字串 部分。巢狀深度 depth 定義 即有效括號字串巢狀的層數,depth a 表示有效括號字串 a 的巢狀深度。詳情參見題末 巢狀深度 部分。給你乙個 有效括號字串 seq...

leetcode演算法練習 打家劫舍

題目 打家劫舍 你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示...