鍊錶 把鍊錶分成k部分

2021-08-16 20:15:30 字數 455 閱讀 3010

給定乙個鍊錶root和乙個常數k,把鍊錶按照順序分成k個部分,要求任意兩個部分之間相差不能超過乙個元素。

思路:設root的長度為l,則l/k可以先求出每部分的長度,若有餘數,設餘數為i,那麼只需在前i個部分再新增乙個元素即可。r若k>l,實際上也不需要特別處理,按照上面的過程,自然會把結果置為null。

public listnode splitlisttoparts(listnode root, int k) 

curr = root;

int len2 = len1 / k;

int n = len1 % k;

curr = root;

for(int i = 0; i < k; i++)

if(n > 0)

pre.next = null;

}return heads;

}

鍊錶之反轉部分單向鍊錶

package com.chenyu.zuo.linkedlist import com.chenyu.zuo.linkedlist.removebyratio.node 題目 給定乙個單向鍊錶的頭結點head,以及兩個整數from和to 在單項鍊表上把第from個節點和第to個節點這一部分進行反轉...

部分鍊錶題

include bool insert last list ls,data data tmp next node return true void display list ls printf n list createlist 建立鍊錶 ls head next null 空鍊錶 return l...

鍊錶部分翻轉

題目描述 給定乙個鍊錶,翻轉該鍊錶從m到n的位置。要求直接翻轉而非申請新空間。如 給定1 2 3 4 5,m 2,n 4,返回1 4 3 2 5。假定給出的引數滿足 1 m n 鍊錶長度。時間複雜度為o n 以下為 include include typedef struct snode snode...