搜索内容

有一个问题?

如果您有任何疑问,可以在下面询问或输入您要寻找的!

从尾到头打印链表

生成海报
Java硬件工程师
Java硬件工程师 2021-02-09 22:44
阅读需:0

题中来源于挥剑 Offer 06. 从尾撞头复印链表

难题叙述

键入一个链表的头连接点,从尾撞头相反回到每一个连接点的值(用二维数组回到)。
实例 1:

键入:head = [1,3,2]
輸出:[2,3,1]

解题思路:

方法1:先将单链表开展翻转实际操作,随后再解析xml链表就可以,那样做的难题是会毁坏原先的单链表构造,不建议。
有关链表的翻转实际操作能够查看反转链表
方法2:能够运用栈这一算法设计,将每个节点压进到栈中,随后运用栈的后进先出的特性,完成了反序复印的实际效果。
有关Java中栈Stack类的应用和实际操作能够查看Java的Stack类

class Solution {
    //能够运用栈这一算法设计,将每个节点压进栈中,随后运用栈的后进先出的特性,就完成了反序复印的实际效果
    public int[] reversePrint(ListNode head) {
        //建立要给一个栈,将每个节点压进栈中
        Stack stacks=new Stack();
        ListNode p=head;
        int count=0;            //统计分析栈中节点数量
        //将链表的全部节点压进栈中
        while(p!=null){
            count++;
            stacks.push(p);
            p=p.next;
        }
        p=null;
        int []result=new int[count];        //储存結果
        int i=0;
        //将栈中的连接点开展复印,pop出栈
        while(!stacks.empty()){
            p=stacks.pop();
            result[i++]=p.val;
        }
        return result;
    }
}
评论
  • 消灭零回复