leetcode刷题笔记八十六题 分隔链表

leetcode刷题笔记八十六题 分隔链表

源地址:86. 分隔链表

问题描述:

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

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

示例:

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

/**
本题较为简单,使用smaller链表连接小值,使用bigger链表连接大值,将small.next = biggerHead.next即可
*/
/**
 * Definition for singly-linked list.
 * class ListNode(var _x: Int = 0) {
 *   var next: ListNode = null
 *   var x: Int = _x
 * }
 */
object Solution {
    def partition(head: ListNode, x: Int): ListNode = {
        var start = head
        var smaller = new ListNode(0)
        var bigger = new ListNode(0)
        while(start.next != null){
            if(head.x < x){
                smaller.next = head
                smaller = smaller.next
                start = start.next
            }
            else{
                bigger.next = head
                bigger = bigger.next
                start = start.next
            }
        }
        println(head.toString)
        return ListNode(0)
    }
}
posted @ 2020-07-28 01:53  ganshuoos  阅读(86)  评论(0编辑  收藏  举报