首页 > 其他 > 详细

leetcode题目234.回文链表(简单)

时间:2019-11-21 10:09:00      阅读:111      评论:0      收藏:0      [点我收藏+]

题目描述:

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

示例 1:

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

输入: 1->2->2->1
输出: true
进阶:
你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

思路分析:

思路一:借助辅助栈和辅助队列,链表节点依次入队列和入栈,依次出栈和出队,判断是否相等即可

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
      public static boolean isPalindrome(ListNode head) {

        //借助一个栈和一个队列去判断
        Deque<ListNode> deque = new LinkedList<>();
        Stack<ListNode> helper = new Stack<>();
        int count = 0;
        while (head != null) {
            deque.addLast(head);
            helper.push(head);
            head = head.next;
            count++;
        }
        for (int i = 0; i < count; i++) {
            if (deque.poll().val != helper.pop().val) {
                return false;
            }
        }

        return true;
    }
}

时间复杂度:O(n)

空间复杂度:O(2n)->O(n)

leetcode题目234.回文链表(简单)

原文:https://www.cnblogs.com/ysw-go/p/11903763.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!