LeetCode - 86分隔链表

Posted dkccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode - 86分隔链表相关的知识,希望对你有一定的参考价值。

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

你应当保留两个分区中每个节点的初始相对位置。

示例:

    输入: head = 1->4->3->2->5->2, x = 3
    输出: 1->2->2->4->3->5

1 /**
2  * 列表定义
3  * public class ListNode 
4  *     int val;
5  *     ListNode next;
6  *     ListNode(int x)  val = x; 
7  * 
8  */

解法:

技术图片
 1 class Solution 
 2     public ListNode partition(ListNode head, int x) 
 3         if(head == null || head.next == null) 
 4             return head;
 5         
 6         
 7         ListNode bigDump = new ListNode(0);
 8         ListNode smallDump = new ListNode(0);
 9         ListNode big = bigDump;
10         ListNode small = smallDump;
11         while(head != null) 
12             if (head.val >= x) 
13                 big.next = head;
14                 big = big.next;
15              else 
16                 small.next = head;
17                 small = small.next;
18             
19             head = head.next;
20         
21         big.next = null;
22         small.next = bigDump.next;
23         return smallDump.next;    
24     
25 
View Code

说明:使用双指针的方式,分别记录小于、大于等于的列表部分。然后在将其拼接起来。

注意:需要创建两个临时变量来存储两个新列表的头部地址

 

以上是关于LeetCode - 86分隔链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode#86-分隔链表

[LeetCode] 86. 分隔链表

LeetCode:86. 分隔链表(python3)

Leetcode刷题Python86.分隔链表

LeetCode 86. 分隔链表

LeetCode - 86分隔链表