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

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

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

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 the head
 * @return bool布尔型
*/
func isPail( head *ListNode ) bool {
    // write code here
    if head==nil|| head.Next==nil{
        return true
    }
    var left,mid,fast *ListNode
    mid=head
    fast=head
    for fast!=nil&&fast.Next!=nil{ //找中点
        left=mid
        mid=mid.Next
        fast=fast.Next.Next
    }
    left.Next=nil
    r:=reverse(mid) //反转后半段链表
    for head!=nil{ //对比
        if head.Val!=r.Val{
            return false
        }
        head=head.Next
        r=r.Next
    }
    return true
}
func reverse(p *ListNode)*ListNode{ //
    var pre,cur *ListNode
    for p!=nil{
        cur=p
        p=p.Next
        cur.Next=pre
        pre=cur
    }
    return pre
}

全部评论

相关推荐

03-30 19:30
石家庄学院 Java
野蛮的柯基在游泳:都能入股了,还得是Java
点赞 评论 收藏
分享
xxxxOxo:该催就催,想要你的不会因为催就挂,催了就挂的是因为本来就要挂你
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务