Leetcode——回文链表

Posted Yawn,

tags:

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

1. 题目

请判断一个链表是否为回文链表。

示例 1:
输入: 1->2
输出: false

示例 2:
输入: 1->2->2->1
输出: true

进阶:
你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

2. 题解

解法一:

通俗解法:将值复制到数组中后用双指针法

  • 计算出链表长度
  • 把链表中的值都存进数组
  • 判断数组是不是回文串
/**
 * 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 cur1 = head;
        ListNode cur2 = head;
        int len = 0;
        while(cur1 != null){
            cur1 = cur1.next;
            len++;
        }
        int[] temp = new int[len];
        for(int i = 0; i < len; i++){
            if(cur2 != null){
                temp[i] = cur2.val;
                cur2 = cur2.next;
            }
        }
        int left = 0, right = len - 1;
        while(left < right){
            if(temp[left] != temp[right]){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
}

解法二:

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

LeetCode 234. 回文链表

Leetcode链表回文链表(234)

Leetcode234. 回文链表(快慢指针+反转链表)

LeetCode﹝回文ி﹞数串链表对

LeetCode﹝回文ி﹞数串链表对

LeetCode﹝回文ி﹞数串链表对