86 連結串列劃分 partition list
阿新 • • 發佈:2018-11-12
題目描述:
將所有小於x的節點放在大於等於x節點的左側,並且報賬這些節點原來的相對位置,也就是一致性
思路:
巧用臨時節點
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode partition(ListNode head, int x) { ListNode less=new ListNode(0); ListNode less_pre=less; ListNode more=new ListNode(0); ListNode more_pre=more; while(head!=null){ if(head.val<x){ less_pre.next=head; less_pre=less_pre.next; } else{ more_pre.next=head; more_pre=more_pre.next; } head=head.next; } less_pre.next=more.next; more_pre.next=null; return less.next; } }
也就是定義兩個臨時頭結點,一個放小於x的數,一個放大於等於x的數,然後將兩個連結串列連線起來,返回前面小於連結串列 的頭部的next就是我們想要的連結串列的頭部(因為有一個頭結點)