234. Palindrome Linked List

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向前移动
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容