1.トピック
X分周基準リストにプログラミングする、ようにXは先ノードのノードのすべてがx以上未満です。リストが含まれている場合は、X、Xの要素xが(下記参照)の後にのみが発生するよりも小さくなっています。単に「右半部」缶に要素xを分割し、これを右半分と左半分との間に配置される必要はありません。
输入: head = 3->5->8->5->10->2->1, x = 5
输出: 3->1->2->10->5->5->8
出典:滞在ボタン(LeetCode)
//leetcode-cn.com/problems/partition-list-lcci:リンク:httpsの
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。
2.問題の解決
長時間読んタイトルは、いつでも質問の意味のあいまいな記述を感じることができます。
最後に見つかった、意味の質問はあなたが前の行に置くようにすることですX X配置数よりも少ないです。Xの数よりも大きいが、それはどこに滞在する滞在するのが大好きいる、コントロールしていません!
コメント熱心なユーザー:前と力同じタイトルを着用しないでください。実際には、この質問は、より寛大が必要です。ノードがX未満の前に配置され、Xは、背面に以上のノードです。両側のxのリストについてはどのような順序で、かつ要求していません。
問題解決のアイデア:
補間による終わりの前、頭の後ろに補間し、その後2を拾う://チェーンの再編成
class Solution
{
public:
ListNode* partition(ListNode* head, int x)
{
if(head == NULL || head->next == NULL)
return head;
ListNode * first = new ListNode(-1);
ListNode * result = first;
ListNode * second = new ListNode(-1);
ListNode * headNext = NULL;
while(head)
{
headNext = head->next;
if(head->val<x)
{
first->next = head;
first = first->next;
}
else
{
head->next = second->next;
second->next = head;
}
head = headNext;
}
first->next = second->next;
return result->next;
}
};