美文网首页
86. 分隔链表

86. 分隔链表

作者: 水中的蓝天 | 来源:发表于2022-07-18 00:12 被阅读0次

86. 分隔链表

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你应当 保留 两个分区中每个节点的 初始相对位置(相对位置就是说 1在2前面那最终1就还得在2前面)

示例
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]

思路 : 分隔法,先把链表分隔为两个新的链表 lDummyHead 和 rDummyHead,最终再把两个两边拼接就得到想要的结果



class Solution {
    public ListNode partition(ListNode head, int x) {
        
        if(head==null) return head;
        
        //1.定义两个分隔链表
        //左链表
        ListNode lDummyHead = new ListNode(0);
        ListNode lTail = lDummyHead;
        //右链表
        ListNode rDummyHead = new ListNode(0);
        ListNode rTail = rDummyHead;
        
        //2. 循环组装两个新链表
        while(head != null) {
            // < x 
            if(head.val < x){
               lTail.next = head;
               lTail = head;
            }else {//>=x
               rTail.next = head;
               rTail = head;
            }
           head = head.next; 
        }

        /**  
         3. 清空rTail.next
         这句代码必不可少:rTail.next = null
         因为可能出现这样的情况:
         原链表倒数第N个结点A的值是 >=x 的,A后面所有结点的值都是 <x 的,然后rTail.next最终其实就是
         A.next, 这时就形成了环形链表 这不是我们需要的结果,所以要清空rTail.next
         */
        rTail.next = null;

        //4.拼接两个链表
        lTail.next = rDummyHead.next;

        return lDummyHead.next;

    }
}

相关文章

  • 86. 分隔链表

    86. 分隔链表[https://leetcode-cn.com/problems/partition-list/...

  • 86. 分隔链表

    86. 分隔链表[https://leetcode.cn/problems/partition-list/] 给你...

  • 力扣每日一题:86.分隔链表 创建大小链表与寻找第一个链表头两种

    86.分隔链表[https://leetcode-cn.com/problems/partition-list/s...

  • 86. 分隔链表

    86. 分隔链表 问题 给定一个链表和一个特定值 ,对链表进行分隔,使得所有小于 的节点都在大于或等于的节点之前。...

  • 86. 分隔链表

    双指针法: 直觉我们可以用两个指针pbig 和 psmall 来追踪上述的两个链表。两个指针可以用于分别创建两个链...

  • 86. 分隔链表

    原题 https://leetcode-cn.com/problems/partition-list/submis...

  • 86. 分隔链表

    https://leetcode-cn.com/problems/partition-list/solution/...

  • 86. 分隔链表

    给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或...

  • LeetCode 86. 分隔链表

    86. 分隔链表 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点...

  • 每日一题2. 分隔链表

    86. 分隔链表 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点...

网友评论

      本文标题:86. 分隔链表

      本文链接:https://www.haomeiwen.com/subject/twstirtx.html