
题目描述
234. 回文链表
给你一个单链表的头节点 head
,请你判断该链表是否为
回文链表
。如果是,返回 true
;否则,返回 false
。
示例 1:

1 2
| 输入:head = [1,2,2,1] 输出:true
|
示例 2:

1 2
| 输入:head = [1,2] 输出:false
|
提示:
- 链表中节点数目在范围
[1, 105]
内
0 <= Node.val <= 9
解题思路
将值复制到数组中后用双指针法
代码实现
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
| public class Solution234Case1 { public static boolean isPalindrome(ListNode head) { List<Integer> list = new ArrayList<>(); while (null != head) { list.add(head.val); head = head.next; } int left = 0; int right = list.size() - 1; while (left < right) { if (!list.get(left).equals(list.get(right))) { return false; } left++; right--; } return true; }
public static void main(String[] args) { ListNode node4 = new ListNode(1, null); ListNode node3 = new ListNode(2, node4); ListNode node2 = new ListNode(2, node3); ListNode node1 = new ListNode(1, node2); System.err.println(isPalindrome(node1)); } }
|