LC 回文链表

Posted yangbocsu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC 回文链表相关的知识,希望对你有一定的参考价值。

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;
    }
}

以上是关于LC 回文链表的主要内容,如果未能解决你的问题,请参考以下文章

算法刷题:LC初级算法

算法刷题:LC初级算法

LC 验证回文串

[M链表] lc725. 分隔链表(模拟+代码优化+代码实现)

[M链表] lc725. 分隔链表(模拟+代码优化+代码实现)

[M链表] lc725. 分隔链表(模拟+代码优化+代码实现)