您的位置:首页 > 其它

LEETCODE-Palindrome Linked List

2015-09-26 17:14 316 查看
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?

思路:将链表中的值赋值到一个整形数组中并对数组中的元素进行处理计算,判断是否为回文;

/**
* 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) {
int L[100000];
if(head == NULL)
return 1;
if(head->next == NULL)
return 1;
ListNode* p = head;
int i = 0;
while(p != NULL){
L[i] = p->val;
p = p->next;
i++;
}
i = i - 1;
for(int j = 0; j <= i; j++){
if(L[j] != L[i])
return 0;
i--;
}
return 1;
}
};


将整形数组改为vector容器;

vector L; //定义一个vector的整形容器L;

L.push_back(p->val);//将链表中p指向的元素的值压入L vector容器中;

/**
* 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) {
vector<int> L;
if(head == NULL)
return 1;
if(head->next == NULL)
return 1;
ListNode* p = head;
int i = 0;
while(p != NULL){
L.push_back(p->val);
p = p->next;
i++;
}
i = i - 1;
for(int j = 0; j <= i; j++){
if(L[j] != L[i])
return 0;
i--;
}

return 1;
}
};


但是利用vector容器会增加时间复杂度;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表 vector 数组