首页 > 其他 > 详细

力扣 234. 回文链表

时间:2020-06-21 20:24:14      阅读:65      评论:0      收藏:0      [点我收藏+]

234. 回文链表

请判断一个链表是否为回文链表。
示例 1:

输入: 1->2
输出: false

示例 2:

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

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

思路一:

借助一个列表,先遍历链表存下所有结点,然后第二次遍历链表比较列表中的结点

 1 class Solution {
 2     
 3     public boolean isPalindrome(ListNode head) {
 4         ArrayList<ListNode> list = new ArrayList<>();
 5         for(ListNode node = head; node != null; node = node.next){
 6             list.add(node);
 7         }
 8         int i = list.size()-1;
 9         for(ListNode node = head; node != null && i >= 0; node = node.next, i--){
10             if(node.val != list.get(i).val){
11                 return false;
12             }
13         }
14         return true;
15     }
16 }

力扣测试时间为2ms, 空间为43.2MB

复杂度分析:

时间复杂度:遍历了两次链表,所以时间复杂度为O(n)

空间复杂度:O(n)

 

力扣 234. 回文链表

原文:https://www.cnblogs.com/hi3254014978/p/13173762.html

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