LeetCode--No.234--Palindrome Linked List

来源:互联网 发布:c3p0连接池配置优化 编辑:程序博客网 时间:2024/05/01 07:02

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

空间复杂度O(n)的思路很容易就能想到。
O(1)的情况的话,其实和reverse LinkedList并没什么区别了。
所以说以前做过的题,一定要头脑清晰啊!



/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public boolean isPalindrome(ListNode head) {        int count = 1;        ListNode node = head;        if (head == null || head.next == null)            return true;        while(node.next != null){            count++;            node = node.next;        }        ListNode mid = head;        for(int i = 0; i < count/2; i++){            mid = mid.next;        }        mid = reverse(mid);        for(int i = 0; i < count/2; i++){            if (head.val != mid.val)                return false;            else{                head = head.next;                mid = mid.next;            }        }        return true;                }    public ListNode reverse(ListNode head){        ListNode prev = null;        while(head != null){            ListNode next = head.next;            head.next = prev;            prev = head;            head = next;        }        return prev;    }}

中国男乒加油!

0 0
原创粉丝点击