[剑指offer]面试题第[3]题[JAVA][从尾到头打印链表][栈]
生活随笔
收集整理的這篇文章主要介紹了
[剑指offer]面试题第[3]题[JAVA][从尾到头打印链表][栈]
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【問(wèn)題描述】
輸入一個(gè)鏈表,按鏈表從尾到頭的順序返回一個(gè)ArrayList。
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */【解答思路】
1.ArrayList遍歷接收,翻轉(zhuǎn)
import java.util.ArrayList; import java.util.Collections; public class Solution {public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {ArrayList<Integer> list = new ArrayList<Integer>();while(listNode != null){list.add(listNode.val);listNode = listNode.next;}Collections.reverse(list);//使用Collections的reverse方法,直接將list反轉(zhuǎn)return list;} }2.想到棧的特性先入后出,完成逆序
import java.util.ArrayList; import java.util.Stack; public class Solution {public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {Stack<Integer> stack=new Stack<Integer>();while(listNode!=null){stack.push(listNode.val);listNode=listNode.next; }ArrayList<Integer> list=new ArrayList<Integer>();while(!stack.isEmpty()){list.add(stack.pop());}return list;} }3.遞歸實(shí)現(xiàn) (遞歸的本質(zhì)還是使用了堆棧結(jié)構(gòu))
import java.util.ArrayList; import java.util.Stack; public class Solution {public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {ArrayList<Integer> list=new ArrayList<Integer>();ListNode pNode=listNode;if(pNode!=null){if(pNode.next!=null){list=printListFromTailToHead(pNode.next);}list.add(pNode.val);}return list;} }【總結(jié)】
1.鏈表基礎(chǔ)知識(shí)
- 新建
- 遍歷
2.堆棧基本操作
- 新建
- 出棧
- 入棧
總結(jié)
以上是生活随笔為你收集整理的[剑指offer]面试题第[3]题[JAVA][从尾到头打印链表][栈]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 软件开发流程都是什么样的呢?
- 下一篇: keeplive+haproxy+ngi