Palindrome Linked List leetcode
2016-01-03 18:07
232 查看
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?
Subscribe to see which companies asked this question
思路:
1.利用快慢两个指针找到中间结点
2.从中间结点下一个结点开始逆置链表,得到新的链表
3.新的链表与原来链表依次比较结点,如有不同,return false
思路很清晰,代码直接写在leetcode网站上了,没有调试,一次性AC通过,很有成就感
Follow up:
Could you do it in O(n) time and O(1) space?
Subscribe to see which companies asked this question
思路:
1.利用快慢两个指针找到中间结点
2.从中间结点下一个结点开始逆置链表,得到新的链表
3.新的链表与原来链表依次比较结点,如有不同,return false
思路很清晰,代码直接写在leetcode网站上了,没有调试,一次性AC通过,很有成就感
bool isPalindrome(ListNode* head) { if (head == nullptr || head->next == nullptr) return true; // 寻找中间结点 ListNode *slow = head; ListNode *fast = head; while (fast->next != nullptr && fast->next->next != nullptr) { slow = slow->next; fast = fast->next->next; } // 逆置后部分链表 ListNode *newList = slow->next; ListNode *curNode = slow->next->next; newList->next = nullptr; while (curNode != nullptr) { ListNode *temp = curNode->next; curNode->next = newList; newList = curNode; curNode = temp; } // 依次比较 while (newList != nullptr) { if (newList->val != head->val) return false; newList = newList->next; head = head->next; } return true; }
相关文章推荐
- 源代码管理工具SVN
- 光流算法:Brox算法
- 机器学习(三):分类算法之决策树算法
- Access System
- 使用windows内存-堆内存
- 【基础建模】复杂建模-布尔运算和放样学习笔记
- java Cookie+Session实现自动登录
- HDU1575-Tr A(矩阵高速幂)
- Talented Chef
- Easyui-DataGrid 的增删查改
- django之创建第6-2个项目-过滤器列表
- Unity-Animator深入系列---控制IK
- 物体运动--通过改变transform--概述
- HDU 1548 A strange lift(BFS)
- VMware怎么开机自启动,关机自动挂起虚拟机
- 使用 /proc 文件系统来访问 Linux内核的内容
- int * * a[10],int * (*a)[10]和 int(*a[10])() 分别是什么意思
- 树莓派raspi2-ubuntu meta安装配置指导
- jQuery获取页面及个元素高度、宽度
- C++程序设计课后习题及解答(第四章)