内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

Swift LeetCode分隔链表

2019-03-05 21:14 出处:清屏网 人气: 评论(0

题目

分隔链表

问题:

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。

示例:

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

解题思路:

这个题一直把我搞在蒙圈的路上、不知道有没有人和我一样总认为 value =4的节点要放到value =3节点后面。

代码:

/**
public class SingNode {
    public var value : Int
    public var nextNode: SingNode?
    
    public init(value:Int) {
        self.value = value
    }
}

extension SingNode : CustomStringConvertible {
    public var description: String {
        var string = "\(value)"
        var node = self.nextNode
        
        while node != nil {
            string = string + " -- " + "\(node!.value)"
            node = node?.nextNode
        }
        return string
    }
}
 **/
      
func partition(_ head: SingNode?, _ x: Int) -> SingNode? {
        let prevDummy = SingNode.init(value: 0)
        var prev = prevDummy
        let postDummy = SingNode.init(value: 0)
        var post = postDummy
        
        var node = head

        while node != nil {
            if node!.value < x {
                prev.nextNode = node
                prev = node!
            } else {
                post.nextNode = node
                post = node!
            }
            node = node!.nextNode
        }
        
        post.nextNode = nil
        prev.nextNode = postDummy.nextNode
   
        return prevDummy.nextNode
    }
分享给小伙伴们:
本文标签: SwiftLeetCode分隔链表

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.