LeetCode 86. 分隔链表

中等标签还以为有什么更厉害的解法,典型四指针一次遍历;

 

注意一下空结点的判定问题;

 

ListNode* partition(ListNode* head, int x) {
	ListNode* h1 =new ListNode(-1);
	ListNode* h2 = new ListNode(-1);
	ListNode* p1 = h1;
	ListNode* p2 = h2;
	while (head != NULL) {
		if (x > head->val) {
			p1->next = new ListNode(head->val);
			p1 = p1->next;
		}
		else {
			p2->next = new ListNode(head->val);
			p2 = p2->next;
		}
		head = head->next;
	}
	p1->next = h2->next;
	return h1->next;
}

  

posted @ 2021-01-04 21:45  暮云林凌  阅读(67)  评论(0)    收藏  举报