Given a singly linked list, determine if it is a palindrome.
Example 1:
1 2
|
Input: 1->2 Output: false
|
Example 2:
1 2
|
Input: 1->2->2->1 Output: true
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
class { public boolean isPalindrome(ListNode head) { if (head == null || head.next == null) { return true; } Deque<Integer> stack = new ArrayDeque<>(); ListNode slow = head; ListNode fast = head; while (fast != null && fast.next != null) { stack.push(slow.val); slow = slow.next; fast = fast.next.next; } if (fast != null) { slow = slow.next; } ListNode rCur = slow; while (rCur != null) { if (rCur.val != stack.pop()) { return false; } rCur = rCur.next; } return true; } }
|
近期评论