美文网首页算法
面试题 02.04. 分割链表

面试题 02.04. 分割链表

作者: crazyfox | 来源:发表于2021-09-15 13:42 被阅读0次

    面试题 02.04. 分割链表

    难度中等67

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

    你不需要 保留 每个分区中各节点的初始相对位置。

    示例 1:

    image

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

    示例 2:
    输入:head = [2,1], x = 2
    输出:[1,2]
    </pre>

    提示:

    • 链表中节点的数目在范围 [0, 200]
    • -100 <= Node.val <= 100
    • -200 <= x <= 200

    思路:
    思路:头尾节点,index作为 遍历节点,小于的放到头节点,大于的放到尾节点,最后拼接

    class Solution {
        public ListNode partition(ListNode head, int x) {
            ListNode lHead = new ListNode(0);
            ListNode lTail = lHead;
            ListNode rHead = new ListNode(0);
            ListNode rTail = rHead; 
            while(head !=null){
                if(head.val<x){
                    lTail.next = head;
                    lTail = head;
    
                }else{
                    rTail.next = head;
                    rTail = head;
                }
                head = head.next;
            }
            rTail.next = null;
            lTail.next = rHead.next;
            return lHead.next;
    
        }
    }
    

    相关文章

      网友评论

        本文标题:面试题 02.04. 分割链表

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