leetcode Partition List

来源:互联网 发布:excel 一列数据递增 编辑:程序博客网 时间:2024/06/13 05:28

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) {        ListNode node1(0), node2(0);        ListNode *p1 = &node1, *p2 = &node2;        while (head) {            if (head->val < x)                p1 = p1->next = head;//小于数值的节点            else p2 = p2->next = head;//大于数值的节点            head = head->next;        }        p2->next = nullptr;//链表尾指向空        p1->next = node2.next;//链表拼接        return node1.next;    }};