15算法课程 234. Palindrome Linked List

来源:互联网 发布:java发展前景大不大 编辑:程序博客网 时间:2024/06/08 15:40


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?


solution:

遍历一次链表维护一个数组并存储对应value,再从头遍历链表的同时从尾部遍历数组,并进行比较


code:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    bool isPalindrome(ListNode* head) {        ListNode* temp = head;        vector<int> nums;        while(temp)        {            nums.push_back(temp->val);            temp = temp->next;        }        vector<int>::iterator itr= nums.end();        itr--;        while(head)        {            if(head->val==*itr)            {                itr--;                head= head->next;            }            else                return false;        }        return true;    }};