[LeetCode]Palindrome Linked List

来源:互联网 发布:sql 注入 php 提权 编辑:程序博客网 时间:2024/06/08 05:27

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?

题解:获得链表一半的位置,再将其反转,最后2个半截的链表比较

public boolean isPalindrome(ListNode head) {if(head == null || head.next == null)return true;ListNode fast=head,slow=head;while(fast.next!=null && fast.next.next!=null ){ //slow走到一半的位置slow = slow.next;fast = fast.next.next;}     ListNode font = head;  slow = reverseList(slow);while(font!=null){   //两个指针比较if(font.val != slow.val){return false;}font = font.next;slow = slow.next;}return true;}public ListNode reverseList(ListNode head){ //将后半截链表反转ListNode temp = head.next,pre = head;while(temp!=null){ListNode r = temp.next;temp.next = pre;pre = temp;temp = r;}head.next = null;return pre;}

参考:http://blog.csdn.net/brucehb/article/details/46837209

0 0
原创粉丝点击