Leetcode 234. Palindrome Linked List (Easy) (cpp)
2016-07-17 17:34
585 查看
Leetcode 234. Palindrome Linked List (Easy) (cpp)
Tag: Linked List, Two Pointers
Difficulty: Easy
Tag: Linked List, Two Pointers
Difficulty: Easy
/* 234. Palindrome Linked List (Easy) Given a singly linked list, determine if it is a palindrome. */ /** * 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) { if (head == NULL || head -> next == NULL) { return true; } ListNode *mid = head; ListNode *last = head; while (last -> next != NULL && last -> next -> next != NULL) { mid = mid -> next; last = last -> next -> next; } mid -> next = reverse(mid -> next); mid = mid -> next; while (mid != NULL) { if (mid -> val != head -> val) { return false; } mid = mid -> next; head = head -> next; } return true; } ListNode* reverse(ListNode* head) { ListNode *prev = NULL; ListNode *next = NULL; while (head != NULL) { next = head -> next; head -> next = prev; prev = head; head = next; } return prev; } };
相关文章推荐
- C++ 常用泛型算法的使用
- 下面有关C++中为什么用模板类的原因,描述错误的是?
- USACO 2006 nov POJ3255 严格次短路 解题报告
- 最短路径树
- 用文件IO而不是stdio输入输出
- C++STL之string
- C++应用程序性能优化——操作系统内存管理
- c++ hash_map
- USACO3.2.6 香甜的黄油 解题报告
- C++ 指针学习笔记
- C语言中的三值合一
- 用C语言实现二分查找
- C++多重继承二义性解决
- POJ 2337 Catenyms
- C++链表的建立,排序,删除
- C++Primer 异常处理
- 熟练掌握(区分)i++和++i
- 【模板大法好】预处理组合数模板
- Leetcode 28. Implement strStr() (Easy) (cpp)
- error C3867: “Point::getX”: 函数调用缺少参数列表;请使用“&Point::getX”创建指向成员的指针