0
点赞
收藏
分享

微信扫一扫

leetcode--分隔链表(java)

编程练习生J 2023-06-03 阅读 65

分割链表

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)

举报

相关推荐

0 条评论