解法一:递归

如果不考虑递归的栈开销的话,满足空间复杂度234. 回文链表 - 图1的要求。

  1. /**
  2. * Definition for singly-linked list.
  3. * public class ListNode {
  4. * int val;
  5. * ListNode next;
  6. * ListNode(int x) { val = x; }
  7. * }
  8. */
  9. class Solution {
  10. ListNode cur;
  11. public boolean isPalindrome(ListNode head) {
  12. cur = head;
  13. return dfs(head);
  14. }
  15. private boolean dfs(ListNode p) {
  16. if (p == null) {
  17. return true;
  18. }
  19. boolean ans = dfs(p.next) && (p.val == cur.val);
  20. cur = cur.next;
  21. return ans;
  22. }
  23. }