234.E 回文链表

Problem: 234. 回文链表arrow-up-right

思路

思路1:把链表节点放到数组中,然后通过双指针遍历,两个指针一头一尾,分别往后和往前走,只要有一个位置不相等,那就不是回文。

这种思路的空间复杂度是O(N)

思路2:这道题的难点是指针不能从后往前遍历,因此考虑把后半段反转,然后就可以找到前半段和后半段的头结点,然后用双指针法进行遍历处理了。

Code

代码1:

func isPalindrome(head *ListNode) bool {
	var nums []int
	for head != nil {
		nums = append(nums, head.Val)
		head = head.Next
	}

	i, j := 0, len(nums)-1
	for i < j {
		if nums[i] != nums[j] {
			return false
		}

		i++
		j--
	}

	return true
}

代码2:

Last updated