每日编程-20170412
Posted r088r088
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日编程-20170412相关的知识,希望对你有一定的参考价值。
题目描述
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。
给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。
测试样例:
1->2->2->1
返回:true
解答:
用栈即可,就是初次答链表,试一下
1 #include <stack> 2 using namespace std; 3 4 struct ListNode { 5 int val; 6 struct ListNode *next; 7 ListNode(int x) : val(x), next(NULL) {} 8 }; 9 10 class PalindromeList { 11 public: 12 bool chkPalindrome(ListNode* A) { 13 // write code here 14 bool answer = true; 15 ListNode *p = A; 16 stack<int> s; 17 while (p) 18 { 19 s.push(p->val); 20 p = p->next; 21 } 22 p = A; 23 while (p) 24 { 25 if (s.top()!= p->val) 26 { 27 answer = false; 28 break; 29 } 30 s.pop(); 31 p = p->next; 32 } 33 return answer; 34 } 35 };
以上是关于每日编程-20170412的主要内容,如果未能解决你的问题,请参考以下文章