
剑指 Offer 24. 反转链表
发布日期:2021-05-06 23:24:45
浏览次数:18
分类:技术文章
本文共 2074 字,大约阅读时间需要 6 分钟。
package SwordOffer;/** * @Description: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL 限制:0 <= 节点个数 <= 5000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。* @Param: * @return: * @Author: lvhong* @Date: * @E-mail lvhong282@163.com*/ public class lab24easy { class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } //双指针 其实可以看做返回了一个新链表 public ListNode reverseList(ListNode head) { ListNode pre = head; ListNode cur = null; ListNode temp = null; while (pre != null) { temp = pre.next; //暂存新链表的下一个值 pre.next = cur; //新链表的指向与原来相反 cur = pre;// cur从null(尾结点)变为头,头依次向后 pre = temp; // pre跳到暂存的后一位 } return cur; } //递归1: 尾递归// public ListNode reverseList(ListNode head) {// return reverse(head,null); //新链表的前->后依次为入参// }// ListNode reverse(ListNode pre,ListNode cur){// if(pre==null) {return cur;} //旧链表当前节点的下一个为空说明是最后一个节点,结束递归的条件// ListNode temp=pre.next; //暂存pre之后的节点,给下一个递归// pre.next=cur;//改变指向// return reverse(temp,pre);// } //递归2 积压到最后才处理// public ListNode reverseList(ListNode head) {// if(head==null||head.next==null){// return head;// }// ListNode cur = reverseList(head.next);// head.next.next=head;// head.next=null; //断开原来的前向后指向,防止循环链接// return cur;// } //借用外部空间 栈// public ListNode reverseList(ListNode head) {// Stackstack = new Stack<>();// while(head!=null){// stack.push(head);// head=head.next;// }// ListNode cur=stack.pop();// ListNode out =cur;// while(!stack.isEmpty()){// ListNode temp = stack.pop();// cur.next=temp;// cur=cur.next;// }// cur.next=null;// return out;// }}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月11日 00时04分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MySQL.数据处理(数据的插入)
2019-03-04
超炫粒子漩涡
2019-03-04
HTML特效代码大全
2019-03-04
Java爬虫.HttpClient
2019-03-04
网页的基本页面实现 ---- 标签
2019-03-04
Java.数组算法(补充)
2019-03-04
Java.常用类.StringBuffer和StringBuilder
2019-03-04
RDD行动操作算子 --- fold(初始值)、reduce
2019-03-04
【Python数据分析与处理 实训02】 ---2012欧洲杯信息分析(数据过滤与排序)
2019-03-04
KeyError: “[‘xxxx‘] not found in axis“
2019-03-04
【Python数据分析与处理 实训05】--- 探索虚拟姓名数据(数据合并)
2019-03-04