剑指 Offer 06. 从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
代码:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 class Solution { 10 public int[] reversePrint(ListNode head) { 11 if(head==null){return new int[0];} //链表为空,输出空数组 12 List<Integer> list=new ArrayList<>(); //集合中不能放基础数据类型 13 ListNode ln=head; 14 while(ln!=null){ 15 list.add(0,ln.val); //每次都加在最前面,从而实现逆置 16 ln=ln.next; 17 } 18 int[] result=new int[list.size()]; 19 for(int i=0;i<list.size();i++){ 20 result[i]=list.get(i); //循环将值从集合中取出放入数组中,自动拆箱 21 } 22 return result; 23 } 24 }
代码2:
1 class Solution { 2 public int[] reversePrint(ListNode head) { 3 if(head==null){return new int[0];} 4 Stack<ListNode> stack=new Stack<>(); 5 ListNode ln=head; 6 while(ln!=null){ 7 stack.push(ln); 8 ln=ln.next; 9 } 10 int size=stack.size(); //栈的大小size会随着你取出值而改变所以for里面不能用stack.size() 11 int[] result=new int[size]; 12 for(int i=0;i<size;i++){ 13 result[i]=stack.pop().val; 14 } 15 return result; 16 } 17 }
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术