給定乙個鍊錶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...