`
cozilla
  • 浏览: 89212 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

[Leetcode] Partition List

阅读更多

Partition List

 
AC Rate: 428/1694
My Submissions

 

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.

You should preserve the original relative order of the nodes in each of the two partitions.

For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.

 

/**
 * 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) {
        if (head == NULL) return NULL;
        ListNode lessHead(99), largeHead(99);
        ListNode* less = &lessHead, *large = &largeHead, *cur = head;
        while (cur != NULL) {
            if (cur->val < x) {
                less->next = cur;
                less = cur;
            } else {
                large->next = cur;
                large = cur;
            }
            cur = cur->next;
        }
        large->next = NULL;
        less->next = largeHead.next;
        return lessHead.next;
    }
};

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics