[LeetCode] 86.パーティション・リスト

リストを分割します。質問の意味は、リストや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 }。

 

おすすめ

転載: www.cnblogs.com/aaronliu1991/p/11802796.html