标签:har csharp math 空间 插入 while turn lan ext
三指针,一个指向前半部分待插入位置,一个指向后半部分待插入位置,最后一个从前往后遍历
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode Partition(ListNode head, int x) {
// 三指针,一个指向前半部分待插入位置,一个指向后半部分待插入位置,最后一个从前往后遍历
ListNode dummyP = new ListNode(0), dummyQ = new ListNode(0);
ListNode p = dummyP, q = dummyQ, cur = head;
while(cur != null) {
if(cur.val < x) {
p.next = cur;
p = p.next;
} else {
q.next = cur;
q = q.next;
}
cur = cur.next;
}
p.next = dummyQ.next; // 拼接两个链表
q.next = null; // 并把后半部分链表的尾部设置为 null
return dummyP.next;
}
}
[LeetCode题解]86. 分隔链表 | 三指针 + 虚拟头节点
标签:har csharp math 空间 插入 while turn lan ext
原文地址:https://www.cnblogs.com/liang24/p/14013454.html