题目:
请判断一个链表是否为回文链表。
示例 1:
输入: 1->2 输出: false
示例 2:
输入: 1->2->2->1 输出: true
进阶:
你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?
解题思路:
使用递归进行求解,判断每个对应元素是否相等。
代码实现:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { private ListNode start; public boolean isPalindrome(ListNode head) { start = head; return helper(head); } private boolean helper(ListNode head) { if (head == null) return true; boolean r = helper(head.next); boolean b = head.val == start.val; start = start.next; return b && r; } }