思路:
构造一个栈,第一步,从头遍历链表,把值存进栈里面(顺便引入一个i值,记录有几个数,可以用来找出第几个是中间值)。第二步,只需遍历一半栈和链表,for循环挨个对比,如果不一样则返回false,最后在循环外面返回ture!搞定!
public class Solution { // public boolean isPail (ListNode head) { Stack<Integer> s= new Stack<>(); int i=0; ListNode tmp =head;//需要一个辅助指针 while(head!=null){//从头开始入栈 s.push(head.val); i++; head=head.next; } int mid=i/2; for(int j=0; j < mid; j++){//只需遍历一半 if(tmp.val!=s.pop()){ return false; } tmp = tmp.next; } return true; } }