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

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

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 {
	if head == nil || head.Next == nil {
		return true
	}
	slow := head
	mid := head.Next
	fast := head.Next.Next
	for fast != nil && fast.Next != nil {
		slow = slow.Next
		mid = mid.Next
		fast = fast.Next.Next
	}
	slow.Next = nil
	//反转
	reserveList := reserve(mid)
	//判断回文
	for head != nil && reserveList != nil {
		if head.Val != reserveList.Val {
			return false
		}
		head = head.Next
		reserveList = reserveList.Next
	}
	return true
}

func reserve(head *ListNode) *ListNode {
	res := &ListNode{Val: 0}
	for head != nil {
		next := head.Next
		head.Next = res.Next
		res.Next = head
		head = next
	}
	return res.Next
}

全部评论

相关推荐

给个offer灞:校友 是不是金die
点赞 评论 收藏
分享
11-04 19:05
已编辑
东莞城市学院 单片机
AK耐面王一节更比六...:实习2年,一眨眼35了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务