题解 | #牛群编号的回文顺序#

牛群编号的回文顺序

https://www.nowcoder.com/practice/e41428c80d48458fac60a35de44ec528?tpId=354&tqId=10595826&ru=/exam/oj/ta&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D354

知识点:快慢指针,反转链表

解题思路:

先快慢指针找到终点,再反转之后的链表,之后在从头和中点向后遍历,比较是否相等

package main

import . "nc_tools"

/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param head ListNode类
 * @return bool布尔型
 */
func isPalindrome(head *ListNode) bool {
	// write code here
	if head == nil {
		return true
	}
	slow, fast := head, head
	for fast.Next != nil && fast.Next.Next != nil {
		slow = slow.Next
		fast = fast.Next.Next
	}
	pre, cur, next := (*ListNode)(nil), slow.Next, slow.Next
	for cur != nil {
		next = cur.Next
		cur.Next = pre
		pre, cur = cur, next
	}
	left, right := head, pre
	for right != nil {
		if left.Val != right.Val {
			return false
		}
		left = left.Next
		right = right.Next
	}
	return true
}

全部评论

相关推荐

10-29 19:45
吉林大学 Java
从零开始数:自我评价没有必要写,但是看起来你应该是学了csdiy的一些课程,可以在专业技能里面写上自己比较熟悉操作系统和计网,但如果你是找Java的话,把第一个项目换了吧,现在看起来有点四不像。 无论是黑马点评或者说做个轮子项目,刷题和八股也搞起来吧,而且也没必要等到寒假,最近就可以开始找,找到就偷偷实习呗,别被逮到就行了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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