本文主要是介绍力扣面试150 分隔链表 模拟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Problem: 86. 分隔链表
👨🏫 参考题解
Code
/*** 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) {// 创建两个哑节点,用于存储小于x和大于等于x的节点ListNode small = new ListNode(0);ListNode smallHead = small; // small链表的头指针ListNode large = new ListNode(0);ListNode largeHead = large; // large链表的头指针// 遍历原始链表while (head != null) {if (head.val < x) {// 如果当前节点值小于x,将该节点连接到small链表small.next = head;small = small.next; // 更新small指针到当前节点} else {// 如果当前节点值大于等于x,将该节点连接到large链表large.next = head;large = large.next; // 更新large指针到当前节点}// 移动到下一个节点head = head.next;}// large链表的最后一个节点需要指向null,以防止形成循环链表large.next = null;// 将small链表的最后一个节点指向large链表的头节点small.next = largeHead.next;// 返回small链表的头节点,即分隔后的新链表的头节点return smallHead.next;}
}
这篇关于力扣面试150 分隔链表 模拟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!