当前位置: 代码迷 >> 综合 >> 分隔链表(中等)
  详细解决方案

分隔链表(中等)

热度:42   发布时间:2024-03-08 14:24:51.0

分隔链表(中等)

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

你应当保留两个分区中每个节点的初始相对位置。

struct ListNode
{int val;ListNode *next;ListNode(int x): val(x), next(nullptr) {}
};
class Solution
{
public:ListNode* partition(ListNode *head, int x){if(!head) return nullptr;ListNode *smaller_head = new ListNode(-2);ListNode *smaller = smaller_head;ListNode *larger_head = new ListNode(-1);ListNode *larger = larger_head;while(head){if(head->val < x){smaller->next = head;smaller = smaller->next;}else{larger->next = head;larger = larger->next;}head = head->next;}larger->next = nullptr;smaller->next = larger_head->next;ListNode *ret = smaller_head->next;delete larger_head;delete smaller_head;return ret;}
};

 

  相关解决方案