LeetCode题解:Palindrome Linked List
来源:互联网 发布:淘宝手机端套餐 编辑:程序博客网 时间:2024/06/05 03:39
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?
题意:给定一个单向链表,判断是否为回文
解决思路:假设一个链表是回文,那么把链表分割为1…n/2,n/2+1…n两个部分,这两个部分肯定是相同的(把第二部分顺序逆转过来或者逆转第一部分)。所以如果我们能把任何一个部分的链表顺序逆转过来,就可以解决这个问题。
那么要怎么逆转过来呢?首先可以用快慢指针得到中间结点(一个指针一次向前移动一个结点,一个移动两个结点),而且在指针移动的同时逆转顺序。
public boolean isPalindrome(ListNode head) { if(head == null || head.next == null){ return true; } ListNode pointerA = head; ListNode pointerB = head; ListNode pre = null; ListNode next = pointerA.next; while(pointerB.next != null && pointerB.next.next != null){ pointerB = pointerB.next.next; pre = pointerA; pointerA = next; next = next.next; pointerA.next = pre; } if(pointerB.next == null){ pointerA = pointerA.next; } while(next != null){ if(next.val != pointerA.val){ return false; }else{ next = next.next; pointerA = pointerA.next; } } return true; }
0 0
- LeetCode题解:Palindrome Linked List
- LeetCode 题解(186): Palindrome Linked List
- LeetCode题解-234-Palindrome Linked List
- LeetCode 234 Palindrome Linked List题解
- leetcode题解-234. Palindrome Linked List
- LeetCode Palindrome Linked List
- LeetCode - Palindrome Linked List
- leetcode: Palindrome Linked List
- Leetcode: Palindrome Linked List
- leetcode:Palindrome Linked List
- [LeetCode] Palindrome Linked List
- LeetCode || Palindrome Linked List
- 【leetcode】Palindrome Linked List
- LeetCode-Palindrome Linked List
- Leetcode|Palindrome Linked List
- [leetcode] Palindrome Linked List
- [LeetCode]Palindrome Linked List
- [Leetcode]Palindrome Linked List
- os模块
- 以后KMP就按照这个方式写了。看了kuangbin的写法
- 深入剖析百度dsp系统底层以及框架
- hdu 5371 Hotaru's problem(manacher+尺取法)
- js测试网速
- LeetCode题解:Palindrome Linked List
- STL系列之一 deque双向队列
- javascript深入理解js闭包
- hdu 5379 Mahjong tree dfs
- [leetcode] Palindrome Linked List
- %02d是什么意思
- java设计模式之建造者模式
- 学编程?重要?!
- Java——String