分割鍊錶
將乙個鍊錶按x的大小,將小於x的結點放在x結點的左邊,大於等於的在右邊
解決方法:建立兩個新鍊錶,分別用來儲存大於等於x及小於x的結點,最後進行拼接
1.首先分別建立兩個新煉表及指向兩個新鍊錶最後乙個元素的引用
node smaller=null;
node bigger=null;
node lastsmall=null;
node lastbig=null;
node cur=head;//遍歷鍊錶
2.遍歷鍊錶根據條件查詢結點
while(cur!=null)
else
lasts.next=cur;
lasts=cur;
cur=next;
4.總**
public node partition(node head,int x)
else
lasts.next=cur;
lasts=cur;
cur=next;
}//將節點插入small鍊錶中
else
else
lastb.next=cur;
lastb=cur;
cur=next;
}//將節點插入big鍊錶中
} if(lasts==null)
return big;//遍歷完之後,若small內無節點,則返回big鍊錶
else if(lastb==null)
return small;//遍歷完之後,若big內無節點,則返回small鍊錶
else
lasts.next=big;//否則進行拼接
return small;
}
鍊錶分割問題
題目 編寫 以給定的x為基準值將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前。解法一 交換結點法,回想學習快速排序的時候,也是以基準值將一組數劃分成兩部分,小於基準值的排在前面,大於基準值的排在後半部分。因此解決這個問題也可以使用兩個指標。如果煉表頭結點開始遍歷,第乙個需要移動的結點...
11 鍊錶分割
編寫 以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前 給定乙個鍊錶的頭指標 listnode phead,請返回重新排列後的鍊錶的頭指標。注意 分割以後保持原來的資料順序不變。public listnode partition listnode phead,int x...
leecode分割鍊錶
給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5 解題思路 該題相當於乙個分類問題,基於給定引數x分大和小。基於示例解...