算法通关村第1关【白银】| 回文链表

算法通关村第1关【白银】| 回文链表_第1张图片

 

思路一:遍历链表一次,存入新的数组中,从两端到中间比较

思路二:使用栈,将链表压入栈中,然后出栈比较

思路三:反转链表,依次比较

给出思路二代码如下:

class Solution {
    public boolean isPalindrome(ListNode head) {
        Stack stack = new Stack<>();
        ListNode p = head;
        int len = 0;
        while(p != null){
            stack.push(p.val);
            p = p.next;
            len++;
        }
        len = len / 2;
        while(len > 0){
            if(head.val != stack.pop()){
                return false;
            }
            head = head.next;
            len--;
        }
        return true;
    }
}

你可能感兴趣的:(算法,算法,链表,数据结构)