Given a singly linked list, determine if it is a palindrome.
Example 1:
Input: 1->2
Output: false
Example 2:
Input: 1->2->2->1
Output: true
题目要求
判断链表是否为回文链表
思路
链表若是回文的话,则收尾元素一一对应相等,所以我们想办法构造收尾元素判断即可。
网上思路:
用一个全局变量先指向head,再通过递归来到队尾,比较全局变量和队尾元素,返回一个flag,此时递归到上一层,全局变量也往前移动一位,继续比较。
最后把所有falg相与,返回。
代码
ListNode x = null;//全局变量
boolean flag = true;
public boolean isPalindrome(ListNode head) {
if (head == null)
return true;
x = head;
isEq(head);
return flag;
}
private void isEq(ListNode head) {
if (head.next != null)
isEq(head.next);//递归到最底层,开始比较
flag = flag & head.val == x.val;//falg相与
x = x.next;//x向前移动
}