题解 | #判断一个链表是否为回文结构#

判断一个链表是否为回文结构

http://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f



func isPail( head *ListNode ) bool {
    // write code here
    if head == nil || head.Next == nil {
        return true 
    }
    
    part1 := head 
    part2 := CutList(head)
    part2 = Reverse(part2)
    
    for part1 != nil && part2 != nil {
        if part1.Val != part2.Val {
            return false 
        }
        part1 = part1.Next
        part2 = part2.Next
    }
    
    return true 
}

func Reverse(head *ListNode) *ListNode {
    var prev, next *ListNode 
    for head != nil {
        next = head.Next
        head.Next = prev 
        prev = head 
        head = next
    }
    
    return prev 
}

func CutList(head *ListNode) *ListNode {
    dummy := &ListNode{0, head}
    fast := dummy 
    slow := dummy 
    for fast != nil && fast.Next != nil {
        fast = fast.Next.Next
        slow = slow.Next
    }
    
    tmp := slow.Next
    slow.Next = nil 
    
    return tmp 
}
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务