給定乙個鍊錶和乙個特定值x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。
你應當保留兩個分割槽中每個節點的初始相對位置。
示例:
輸入:head = 1->4->3->2->5->2, x = 3輸出:1->2->2->4->3->5大數結點指標總是指向後續結點,遇到小數結點,則前移到小數結點的尾結點
/*** definition for singly-linked list.
* struct listnode ;
*/struct listnode* partition(struct listnode* head, int x)
struct listnode *pcur=head;
struct listnode *bighead=null, *bignext=null;
struct listnode *smallnext=null;
while(pcur)
else //如果大數頭結點不為空,則需要考慮大數結點的前進
else //如果小數結點不為空,則掛接該數
bignext->next=pcur->next; //因為當前結點是小數結點,所以需要讓大數結點的下乙個節點指向當前結點下乙個節點}}
else //如果當前結點是大數結點
bignext=pcur; //大數結點前進到當前結點
}pcur=pcur->next; //當前結點前進一步
}if(smallnext) //如果小數結點尾結點非空,則掛接大數結點的頭結點
smallnext->next = bighead;
return head;
}
leetcode 86 分隔鍊錶(鍊錶)
給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5用兩個鍊錶分別儲存有小於 x 的節點和大於或等於 x 的節點,最後將兩...
86 分隔鍊錶
給定乙個鍊錶和乙個特定值x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3輸出 1 2 2 4 3 5 definition for singly linked list.st...
86 分隔鍊錶
給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5 方法 遍曆法 思路 定義兩個新鍊錶,head鍊錶逐個開頭遍歷,大於等...