判断链表是否为回文结构(思路清晰)

判断一个链表是否为回文结构

http://www.nowcoder.com/questionTerminal/3fed228444e740c8be66232ce8b87c2f

思路:
构造一个栈,第一步,从头遍历链表,把值存进栈里面(顺便引入一个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;
    }
}
全部评论

相关推荐

自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务