Golang | Leetcode Golang 问题解决 #234 Backtracking Chained Tables - Problem Solved:
最编程
2024-07-17 15:40:46
...
func reverseList(head *ListNode) *ListNode {
var prev, cur *ListNode = nil, head
for cur != nil {
nextTmp := cur.Next
cur.Next = prev
prev = cur
cur = nextTmp
}
return prev
}
func endOfFirstHalf(head *ListNode) *ListNode {
fast := head
slow := head
for fast.Next != nil && fast.Next.Next != nil {
fast = fast.Next.Next
slow = slow.Next
}
return slow
}
func isPalindrome(head *ListNode) bool {
if head == nil {
return true
}
// 找到前半部分链表的尾节点并反转后半部分链表
firstHalfEnd := endOfFirstHalf(head)
secondHalfStart := reverseList(firstHalfEnd.Next)
// 判断是否回文
p1 := head
p2 := secondHalfStart
result := true
for result && p2 != nil {
if p1.Val != p2.Val {
result = false
}
p1 = p1.Next
p2 = p2.Next
}
// 还原链表并返回结果
firstHalfEnd.Next = reverseList(secondHalfStart)
return result
}
推荐阅读
-
使用 cgo 在 Golang 中调用 C 语言库:"runtime/cgo "软件包完整指南 - 摘要
-
LeetCode:计算满足 k 约束 I 的子串数量(滑动窗口 Java)
-
golang 中的并发编程
-
LeetCode] 动态编程 - 95.动态编程 - 95.不同的二叉搜索树 II(附完整 Python/C++ 代码) - 基本思想
-
Conda] 解决在 Conda 中安装软件包时遇到的 "收集软件包元数据 "问题解决在 Conda 中安装软件包时遇到的 "收集软件包元数据 "问题 - 简介
-
LeetCode 问题练习和总结:二叉树的序列化和反序列化 - 297 - 输入:根 = [1,2] 输出: 根[1,2] 提示
-
Golang 地图简介 - Go 地图
-
Leetcode-1115. 交替打印 FooBar [medium] (多线程)
-
LeetCode Hot100 | Day5 | 二进制树右视图 && 二进制树扩展为链式列表
-
leetcode 强制按钮向上刷系列 - [三角形的最大高度] - 答案