剑指offer:反转链表
来源:互联网 发布:如何做一名程序员 编辑:程序博客网 时间:2024/06/05 01:01
题目描述
输入一个链表,反转链表后,输出链表的所有元素。
方法1:用ArrayList
遍历节点存入list中,然后遍历从后输出其节点。
【运行时间:17ms 占用内存:8660k】
import java.util.ArrayList;/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) { ArrayList<Integer> list=new ArrayList<Integer>(); if(head==null)return null;ListNode node=new ListNode(-1); ListNode resNode=node; while(head!=null){ list.add(head.val); head=head.next; } for(int i=list.size()-1;i>=0;i--){ node.next=new ListNode(list.get(i)); node=node.next; } return resNode.next; }}
方法2:依次交换位置
【运行时间:23ms 占用内存:8664k】
public class Solution { public ListNode ReverseList(ListNode head) {ListNode pre=null; ListNode next=null; while(head!=null){ next=head.next; head.next=pre; pre=head; head=next; } return pre; }}
方法3:递归
【运行时间:21ms 占用内存:8532k】
/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) {if(head==null||head.next==null)return head; ListNode pre=ReverseList(head.next); head.next.next=head; head.next=null; return pre; }}
方法4:用栈来实现
【运行时间:26ms 占用内存:8516k】
import java.util.*;public class Solution { public ListNode ReverseList(ListNode head) {Stack<ListNode> stack=new Stack<ListNode>(); if(head==null)return head; while(head!=null){ stack.push(head); head=head.next; } ListNode node=new ListNode(-1); ListNode n=node; while(!stack.isEmpty()){ n.next=new ListNode(stack.pop().val); n=n.next; } return node.next; }}
阅读全文
1 1
- 剑指offer:反转链表
- 剑指offer--反转链表
- 剑指offer--反转链表
- 剑指Offer-反转链表
- 《剑指offer》反转链表
- 剑指 offer:反转链表
- 剑指offer-反转链表
- 剑指offer 反转链表
- 剑指offer-反转链表
- 剑指offer:反转链表
- [剑指offer]反转链表
- 《剑指offer》-反转链表
- 剑指Offer:反转链表
- 剑指offer----反转链表
- 剑指offer|反转链表
- 《剑指offer》反转链表
- 【剑指offer】反转链表
- 剑指offer-反转链表
- Java内存分析
- 637. Average of Levels in Binary Tree
- Reduce运行到99.99%到100%,最后出现了错误,导致任务失败
- 【BIM】Autodesk Navisworks安装成功后,Manage打不开怎么办?
- Java拾遗-编程风格
- 剑指offer:反转链表
- qt信号槽接收不到的情况(自定义数据类型+多线程)
- CSS常见布局效果
- 基于主键一对一关联映射--单双向
- 从无头单链表中删除节点
- 关于在配置hibernate中遇到的问题解决方法
- 出国攻博的申请经验分享
- Python异常:SyntaxError: Non-ASCII character '\xe5' in file
- 【面试题】JVM相关