本文主要是介绍力扣86.分割链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
class Solution {public ListNode partition(ListNode head, int x) {// 初始化两个链表的头节点和尾节点,分别用于存储小于x和大于等于x的节点ListNode leftHead = null, leftTail = null;ListNode rightHead = null, rightTail = null;// 临时变量,用于遍历原链表ListNode next = null;// 遍历原链表while (head != null) {// 保存当前节点的下一个节点next = head.next;// 断开当前节点与原链表的联系head.next = null;// 判断当前节点的值是否小于xif(head.val < x) {// 如果leftHead为空,说明这是第一个小于x的节点,将其设置为leftHeadif(leftHead == null) {leftHead = head;}else{// 否则将当前节点添加到leftTail后面leftTail.next = head;}// 更新leftTail为当前节点leftTail = head;}else {// 如果rightHead为空,说明这是第一个大于等于x的节点,将其设置为rightHeadif(rightHead == null) {rightHead = head;}else{// 否则将当前节点添加到rightTail后面rightTail.next = head;}// 更新rightTail为当前节点rightTail = head;}// 移动到下一个节点head = next;}// 如果leftHead为空,说明所有节点都大于等于x,直接返回rightHeadif (leftHead == null) {return rightHead;}// 将leftTail与rightHead连接起来,形成新的链表leftTail.next = rightHead;// 返回新链表的头节点return leftHead;} }
这篇关于力扣86.分割链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!