思路:一拆为二然后合并
public ListNode partition(ListNode head, int x) {
ListNode dummy1 = new ListNode(-1);
ListNode dummy2 = new ListNode(-1);
ListNode p1 = dummy1;
ListNode p2 = dummy2;
ListNode p = head;
while (p != null) {
if (p.val < x) {
p1.next = p;
p1 = p1.next;
} else {
p2.next = p;
p2 = p2.next;
}
p = p.next;
}
if (dummy1.next == null) {
return head;
} else {
p1.next = dummy2.next;
p2.next = null;//需要断开
return dummy1.next;
}
}
链表--- 给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前,并保留两部分内链表节点原有的相对顺序
猜你喜欢
转载自blog.csdn.net/l1394049664/article/details/81350114
今日推荐
周排行