LeetCode-234. Palindrome Linked List
来源:互联网 发布:手机淘宝如何代理商品 编辑:程序博客网 时间:2024/05/21 23:31
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?
palindrome是指这个链表顺读和倒读都一样
求解思路:
1、将一个链表等分成两个链表,方法是使用快慢指针,当快指针走到表尾时,慢指针正好处在表的中心位置;
2、将后面的链表翻转,参考:LeetCode-206. Reverse Linked List;
3、依次比较两链表的每个节点,若两者不同直接返回false;若直到指针走到表尾,每次的比较结果都一样则返回true。
/** * 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; ListNode* slow=head; while(fast!=nullptr&&fast->next!=nullptr) { fast=fast->next->next; slow=slow->next; } ListNode* last=reverseList(slow); fast=head; while(fast&&last) { if(fast->val!=last->val) return false; fast=fast->next; last=last->next; } return true; } ListNode* reverseList(ListNode* head) { if(head==nullptr||head->next==nullptr) return head; ListNode* pre=nullptr; ListNode* rear=nullptr; ListNode* cur=head; while(cur!=nullptr) { rear=cur->next; cur->next=pre; pre=cur; cur=rear; } return pre; }};
阅读全文
0 0
- [leetcode] 234.Palindrome Linked List
- [LeetCode]234.Palindrome Linked List
- [leetcode] 234.Palindrome Linked List
- 【leetcode】234. Palindrome Linked List
- 【LeetCode】234. Palindrome Linked List
- [leetcode] 234. Palindrome Linked List
- 234. Palindrome Linked List LeetCode
- LeetCode--234. Palindrome Linked List
- LeetCode 234. Palindrome Linked List
- 【LeetCode】234. Palindrome Linked List
- leetcode 234. Palindrome Linked List
- LeetCode *** 234. Palindrome Linked List
- LeetCode 234. Palindrome Linked List
- leetcode-234. Palindrome Linked List
- LeetCode-234.Palindrome Linked List
- 【LeetCode】234. Palindrome Linked List
- [Leetcode]234. Palindrome Linked List
- 【leetcode】234. Palindrome Linked List
- 乐灵珠宝俏皮的3D黄金花仙子守护你私享的浪漫
- win10使用bash
- 日志分析方法概述
- 初学者PS绘画教程
- 数据结构与算法分析计算后缀表达式
- LeetCode-234. Palindrome Linked List
- 1001. A+B Format (20)(PAT)
- 输出金字塔
- 150. Evaluate Reverse Polish Notation
- 冒泡排序
- 浅谈Java类加载
- enum和bitset混合运用场景
- 01.使用多线程
- javacTask: 源发行版 1.7 需要目标发行版 1.7