leetcode 234 回文链表(java)

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isPalindrome(ListNode head) {
        //第一步:遍历链表,将值复制带数组列表中
        //创建一个curr指向当前节点
        ListNode curr = head;
        List<Integer> list =new ArrayList<>();
        while(curr !=null){
            list.add(curr.val);
            curr=curr.next;
        }
        //第二步:使用双指针来检查是否回文
        int front =0;
        int last = list.size()-1;
        //直到front>last则返回true
        while(front < last){
            //如果前指针得到的值不等于后指针获得到的值
            //则返回fase
            if(!list.get(front).equals(list.get(last))){
                return false;
            }
            front++;
            last--;
            } 
        return true; 
    }
}

你可能感兴趣的:(leetcode 234 回文链表(java))