回文链表(java)
什么是回文链表
回文链表是指一个链表,其节点值从前往后和从后往前读是相同的。例如,链表 1->2->3->2->1 就是一个回文链表,因为无论从头到尾还是从尾到头读,节点值都是一样的
题目描述:
给你一个单链表的头节点 head
,请你判断该链表是否为回文链表。如果是,返回 true
;否则,返回 false
。
示例 1:
输入:head = [1,2,2,1] 输出:true示例 2:
输入:head = [1,2] 输出:false
代码思路:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public boolean isPalindrome(ListNode head) {
if(head==null){
return false;
}
List<Integer> list= new ArrayList<>();
ListNode pA = head;
while(pA!=null){
list.add(pA.val);
pA = pA.next;
}
int n = list.size()-1;
for(int i=0;i<list.size()/2;i++){
if(list.get(i)!=list.get(n)){
return false;
}
n--;
}
return true;
}
}