分割链表
leetcode 86 分割链表 (中等)
leetcode 86 分割链表 原题链接,可以直接测试
解题思路:
代码演示:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode partition(ListNode head, int x) {
if(head == null){
return null;
}
//用来链接小于给定值的临时链表
ListNode dump1 = new ListNode(0);
//大于等于的节点的临时链表
ListNode dump2 = new ListNode(0);
//下面三个指针,用来移动比较节点的值
ListNode p1 = dump1;
ListNode p2 = dump2;
ListNode p = head;
while(p != null){
if(p.val < x){
p1.next = p;
p1 = p;
}else{
p2.next = p;
p2 = p;
}
//将p 的next 指针断开,p来到他下一个指针位置。
ListNode temp = p.next;
p.next = null;
p = temp;
}
//将两个临时链表合并起来,
p1.next = dump2.next;
//返回第一个节点。
return dump1.next;
}
}
链表专题
将一个链表按给定值分成小于等于和大于三个部分
leetcoe–合并 K 个升序链表(java)
leetcode–删除链表的倒数第N个节点(java)
合并两个有序链表(java)
leetcode–环形链表.找到入环节点(java)
LeetCode:相交链表(java)