zoukankan      html  css  js  c++  java
  • LeetCode:Palindrome Linked List

    Given a singly linked list, determine if it is a palindrome.

    Follow up:
    Could you do it in O(n) time and O(1) space?

    回文链表即原链表与逆置链表相同,采用辅助栈的特点将链表逆置。(知道链表长度,可以将链表节点顺序映射到数组中,使用数组直接定位元素的特点也可以得到o(n)的时间复杂度)

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     bool isPalindrome(ListNode* head) {
    12         
    13         //一个元素或者没有元素 视为回文链表
    14         if(head==NULL||head->next==NULL) return true;
    15         
    16         stack<int> lstack;
    17         //元素入栈
    18         ListNode *p=head;
    19         
    20         while(p)
    21         {
    22             lstack.push(p->val);
    23             p=p->next;
    24         }
    25         
    26         //元素出栈与链表比较
    27         p=head;
    28         while(p)
    29         {
    30             if(p->val!=lstack.top())
    31                 return false;
    32             lstack.pop();
    33             p=p->next;
    34         
    35         }
    36         
    37         return true;
    38     }
    39 };
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    落忆枫音(我们终将成为”枫音乡的过客“)
    PID221 / 烦人的幻灯片☆ x
    codevs 5971 打击犯罪 x
    洛谷 P2330 [SCOI2005] 繁忙的都市 x
  • 原文地址:https://www.cnblogs.com/xiaoying1245970347/p/4701392.html
Copyright © 2011-2022 走看看