leetcode 鍊錶 86 分隔鍊錶

2021-08-21 12:34:03 字數 894 閱讀 5826

給定乙個鍊錶和乙個特定值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鍊錶逐個開頭遍歷,大於等...