LeetCode-Partition List

来源:互联网 发布:java api 1.8中文在线 编辑:程序博客网 时间:2024/06/03 18:54

这个题想起来不难 就是需要注意细节 

linkedlist 题都需要一个dummy head 来记录新的head dummy head永远next指向新的 head, 需要一个位置指针初始化的时候和dummy 一样 然后在后面某次移动这个位置指针的时候 dummy也就被移动到了正确的head 返回值就是dummy.next

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode partition(ListNode head, int x) {        if ( head == null || head.next == null )            return head;        ListNode temp = head;        ListNode pos = new ListNode(0);        pos.next = head;        ListNode prev = pos;        ListNode dummyHead = pos;        while ( temp != null ){            if ( temp.val < x ){                if (pos.next != temp ){                    prev.next = temp.next;                    ListNode posNext = pos.next;                    pos.next = temp;                    temp.next = posNext;                    pos = pos.next;                    temp = prev.next;                }                else{                    pos = pos.next;                    temp = temp.next;                    prev = prev.next;                                    }            }            else{                temp = temp.next;                prev = prev.next;            }        }        return dummyHead.next;    }}


0 0