*Leetcode 86. Partition List

来源:互联网 发布:数据异构拆分系统 编辑:程序博客网 时间:2024/05/22 11:32

https://leetcode.com/submissions/detail/105588330/


链表partition 为了不让自己绕进去,所以写的时候没考虑长度,按最清晰的思路写。不怕变量多。。。


/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* partition(ListNode* head, int x) {        ListNode *bigger = NULL, *new_head = NULL, *bigger_ptr = NULL, *new_head_ptr = NULL;        if (head == NULL) return head;        while (head) {            if (head -> val >= x) {                if (bigger == NULL) {                    bigger_ptr = bigger = head;                } else {                    bigger_ptr ->next = head;                    bigger_ptr = bigger_ptr->next;                }            } else {                if (new_head == NULL) {                    new_head_ptr = new_head = head;                } else {                    new_head_ptr ->next = head;                    new_head_ptr = new_head_ptr->next;                }            }            head = head->next;        }        if (bigger_ptr) bigger_ptr ->next = NULL;        if (new_head_ptr == NULL) {            return bigger;        } else {            new_head_ptr -> next = bigger;            return new_head;        }    }    // ListNode* partition(ListNode* head, int x) {    //     ListNode *bigger = NULL, *cur=NULL, *new_head = head;    //     if (head == NULL) return head;    //     if (head->next == NULL) return head;    //     while( head -> next ) {    //         if (((head -> next) -> val) >= x) {    //             if (bigger == NULL) {    //                 cur = bigger = head->next;    //             } else {    //                 cur -> next = head->next;    //                 cur = cur -> next;    //             }    //         }    //         if (head ->next -> next != NULL) {    //             head = head->next;    //         } else {    //             break;    //         }    //     }    //     head->next = bigger;    //     return new_head;    // }};