题目描述题解(将值复制到数组中后用双指针法)思路将链表的值全部提取到数组或 ArrayList中然后用双指针在数组上进行回文判断。代码classSolution{publicbooleanisPalindrome(ListNodehead){// 1. 将链表中的所有值复制到 ArrayList 中ListIntegervalsnewArrayList();ListNodecurrentNodehead;while(currentNode!null){vals.add(currentNode.val);currentNodecurrentNode.next;}// 2. 使用双指针在 ArrayList 上判断是否回文intfront0;intbackvals.size()-1;while(frontback){// 注意因为存储的是 Integer 对象严谨起见应先转换为基本类型或使用 equalsintfrontValvals.get(front);intbackValvals.get(back);if(frontVal!backVal){returnfalse;}front;back--;}//while (front back) {// if (!vals.get(front).equals(vals.get(back))) {// return false;// }// front;//back--;//}returntrue;}}复杂度分析时间复杂度O(N)O(N)O(N)。遍历一次链表提取值O(N)O(N)O(N)双指针遍历一次数组O(N/2)O(N/2)O(N/2)总体时间依然是线性的。空间复杂度O(N)O(N)O(N)。我们需要开辟一个额外的 ArrayList 来存储整条链表的值。