Palindrome Linked List
来源:互联网 发布:vb程序中的对象的行为 编辑:程序博客网 时间:2024/05/16 09:07
题目大意:判断一个单链表是否是回文串。要求O(n)时间和O(1)空间。
解题思路:快慢指针确定链表中间节点,再逆转后半部分节点,再同时从两端向中间遍历链表。
代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool isPalindrome(struct ListNode* head) { struct ListNode *fast, *slow, *p=NULL, *q=NULL, *r=NULL, *tail; if(head==NULL) { return true; } fast=head; slow=head; while(fast->next!=NULL &&fast->next->next!=NULL) { slow = slow->next; fast = fast->next->next; } p = slow; if(p!=NULL) { q = p->next; } p->next=NULL; //消除环。少了这一行提交的时候会超时,但是本地运行能得到正确答案,应该是系统检测到最终链表中出现了环。 while(q!=NULL) { r = q->next; q->next = p; p = q; q = r; } tail = p; while(head!=slow) { if(head->val==tail->val){ head = head->next; tail = tail->next; }else { return false; } } if(head->val == tail->val) { return true; } else { return false; }}
0 0
- Palindrome Linked List
- Palindrome Linked List
- Palindrome Linked List
- leetoj Palindrome Linked List
- Palindrome Linked List
- Palindrome Linked List
- Palindrome Linked List
- Palindrome Linked List
- Leetcode47: Palindrome Linked List
- Palindrome Linked List
- 234Palindrome Linked List
- LeetCode Palindrome Linked List
- LeetCode - Palindrome Linked List
- leetcode: Palindrome Linked List
- Palindrome Linked List 234
- Palindrome Linked List
- Palindrome Linked List
- Leetcode: Palindrome Linked List
- JSON语法
- 传统的MapReduce框架慢在那里
- 【程序员的梦想】:今日之梦想
- 剑指offer系列之六十:序列化二叉树
- 数据结构与算法 LeetCode编程练习--Search in Rotated array
- Palindrome Linked List
- Nginx
- 2016我来了
- Viterbi training
- Java基础--集合框架(Map集合)
- 抽象类和接口
- Towards Crazyswarms
- 第三十六课——简单文字处理
- Android Studio使用lambda