本文主要是介绍面试算法-87-分隔链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。
示例 1:
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]
解
class Solution {public ListNode partition(ListNode head, int x) {ListNode dummy = new ListNode(0);dummy.next = head;ListNode p1 = dummy;ListNode p2 = dummy;ListNode p3 = null;while (p2 != null) {p3 = p2.next;if (p3 != null && p3.val < x) {if(p1.next == p3){p2 = p3;p1 = p2; }else{p2.next = p3.next;ListNode temp = p1.next;p1.next = p3;p3.next = temp;p1 = p1.next;}}else{p2 = p3;}}return dummy.next;}
}
这篇关于面试算法-87-分隔链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!