Palindrome Linked List
2016-06-07 17:16
323 查看
c++
/** * 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 == nullptr || head->next == nullptr) return true; ListNode* fast = head, *slow = head; while (fast!=nullptr && fast->next!=nullptr) { fast = fast->next->next; slow = slow->next; } ListNode* node = nullptr; while (slow) { ListNode* nxt = slow->next; slow->next = node; node = slow; slow = nxt; } while (node!=nullptr && head!=nullptr) { if (node->val != head->val) return false; node = node->next; head = head->next; } return true; } };
python
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def isPalindrome(self, head): """ :type head: ListNode :rtype: bool """ if not head: return True fast = slow = head while fast and fast.next: fast = fast.next.next slow = slow.next node = None while slow: nxt = slow.next slow.next = node node = slow slow = nxt while node: if node.val != head.val: return False node = node.next head = head.next return True
reference:
https://leetcode.com/discuss/46304/python-understand-solution-comments-operate-nodes-directly
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- C语言实现选择排序、冒泡排序和快速排序的代码示例