LC 回文链表

x33g5p2x  于10个月前 转载在 其他  
字(0.7k)|赞(0)|评价(0)|浏览(76)

LC 回文链表

  • 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

【思路】

  • 1 先计算出链表的长度;便于创建数组时确定大小
  • 2 遍历列表,把value值保存到数组里面;
  • 3 双指针遍历数组

【代码】

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */
class Solution {
    public boolean isPalindrome(ListNode head) {
        ListNode temp = head;
        int cnt=0;
        while (temp !=null)     //求链表长度
        {
            cnt ++;
            temp = temp.next;
        }

        int arr[] = new int[cnt];   //将列表的value值保存到数组里面
        for (int i = 0; i < cnt; i++) {
            arr[i] = head.val;
            head = head.next;
        }
        boolean flag = true;        //默认是真,如果链表是空的,就默认返回true
        for (int i = 0,j = cnt - 1; i < j; i++,j--)     //双指针遍历数组
        {
            if (arr[i] !=arr[j])
            {
                flag = false;
                break;
            }
        }
        return flag;
    }
}

相关文章