请判断一个链表是否为回文链表。
示例 1:
输入: 1->2 输出: false 示例 2:
输入: 1->2->2->1 输出: true
这道题我第一次看的时候想到了快慢指针,但是具体怎么实现我只想的是遍历一遍然后根据数字规律那样写,虽然能做出来,但是太复杂了 最后想确实麻瓜了,将链表的是赋给数组就行了,在从两端这样查找
class Solution {
public boolean isPalindrome(ListNode head) {
List<Integer> vals = new ArrayList<Integer>();
ListNode currentNode = head;
while (currentNode != null) {
vals.add(currentNode.val);
currentNode = currentNode.next;
}
int front = 0;
int back = vals.size() - 1;
while (front < back) {
if (!vals.get(front).equals(vals.get(back))) {
return false;
}
front++;
back--;
}
return true;
}
}
|