リストを分割します。質問の意味は、リストやXを与え、あなたはリスト内のノードを分離する、非常に単純であるX未満であり、Xは、それぞれ他のノード間の元の順序を混乱させるノードよりも大きいが、ではありません。、アイデアは2つのノード、smallHead、二日酔いを設定し、リンクリストを横断することは比較的簡単ですが、Xより大きいとノードX未満であると、後でsmallHead二日酔いに適用されます。二つのリストをリンクするために、再度リストを横断が完了した後。再び二つのリストをリンクする方法を注意してください。
時間O(N)
スペースO(1)
1 / * * 2 重リンクリストのための*の定義。 3 *関数ListNode(ヴァル){ 4 * this.val =ヴァル。 5 * this.next = NULL; 6 *} 7 * / 8 / * * 9 * @param {ListNode}ヘッド 10 * @param {数}はxは 11 * @return {ListNode} 12 * / 13 のvarパーティション= 関数(頭部、X){ 14 // コーナーケース 15 であれば(ヘッド=== ヌル || head.next === NULL ){ 16 リターンヘッド; 17 } 18 19 // 通常の場合 20 せsmallHead = 新しい ListNode(0 )。 21 せ二日酔い= 新しい ListNode(0 )。 22は 小型=ましょうsmallHeadを。 23は 大=聞かせて二日酔いを。 24 ながら(!ヘッド== NULL ){ 25 LETのTEMP = 新しいListNode(head.val)。 26 であれば(head.val < X){ 27 small.next = TEMP。 28 小さな= small.next。 29 } 他{ 30 big.next = TEMP。 31 大= ; big.next 32 } 33 ヘッド= head.next。 34 } 35 small.next = bigHead.next。 36 リターンsmallHead.next。 37 }。