首页 > 其他分享 >分隔链表

分隔链表

时间:2022-12-01 09:56:13浏览次数:38  
标签:rt head ListNode next 链表 lt 分隔

86.分隔链表

这个题的意思比较简单就是要把小于x的放一边,大于x的放一边,我们可以把这一个链表分为大于 x,和小于 x 的两个链表,分开后只需要将小于 x 链表的最后一个结点的 next 指向大于 x 链表的头结点的 next 即可,最后将大于 x 链表的最后一个元素置为null即可

class Solution {
    public ListNode partition(ListNode head, int x) {
        ListNode lh = new ListNode(-1);
        ListNode rh = new ListNode(-1);
        ListNode lt = lh;
        ListNode rt = rh;
        /* for (ListNode p = head; p != null; p = p.next) {
            if (p.val < x) {
                lt.next = p;
                lt = lt.next;
            } else {
                rt.next = p;
                rt = rt.next;
            } 
        } */
        while (head != null) {
            if (head.val < x) {
                lt.next = head;
                lt = lt.next;
            } else {
                rt.next = head;
                rt = rt.next;
            }
            head = head.next;
        }
        lt.next = rh.next;
        rt.next = null;
        return lh.next;
    }
}

标签:rt,head,ListNode,next,链表,lt,分隔
From: https://www.cnblogs.com/kingmc/p/16940520.html

相关文章

  • 双链表
    实现一个双链表,双链表初始为空,支持5 种操作:在最左侧插入一个数;在最右侧插入一个数;将第k 个插入的数删除;在第k 个插入的数左侧插入一个数;在第k 个插入的数右侧插......
  • 合并两个有序链表
    21.合并两个有序链表根据题目要求可以知道这两个链表是升序的,需要将这两个链表合成一个新的升序链表并返回方法一:迭代当list1和list2都不是空链表时,判断list1和l......
  • 链表基础知识
    1.什么是链表   链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空......
  • 双向链表
    双向链表介绍因为在循环链表中某一结点要访问其前驱结点的时候,需要循环扫描整个链表一遍,效率太低了。为了方便访问结点的前驱结点,我们引入了双向链表的概念。原本一个结......
  • 双链表
    //e[]表示节点的值,l[]表示节点的左指针,r[]表示节点的右指针,idx表示当前用到了哪个节点inte[N],l[N],r[N],idx;//初始化voidinit(){//0是左端点,1是右端点......
  • 链表-双向链表
    在双向链表中,除了下一个节点链接之外,每个节点还包含指向序列中“前一个”节点的第二个链接字段。这两个链接可以称为'forward('s')和'backwards',或'next'和'prev'('previous......
  • 相交链表
    160.相交链表由题目要求可以知道,题目数据保证了不会出现环形注意,函数返回结果后,链表必须保持其原始结构。方法一:哈希集合利用哈希表的特性,不能放重复元素判断两个链......
  • 单向循环链表-约瑟夫问题
    单向环形列表应用场景:约瑟夫环问题思路:创建第一个节点,让first指向该节点,并形成环状后面当我们每创建一个新的节点,就把该节点,加入到已有的环形链表中即可遍历环形链......
  • C#面试题 算法 --- 2 单链表倒置
    classNode{publicobjectdata;publicNodenext;publicNode(objectdata){this.data=data;}} ///......
  • 第一周,链表、栈、队列
    第一周,链表、栈、队列206.反转链表方法一:双指针法:定义两个指针:pre和cur每次让pre的next指向cur,实现一次局部反转局部反转完成之后,pre和cur同时往前移动......