立志用最少的代码做最高效的表达


定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

限制:
0 <= 节点个数 <= 5000


理解链表最好的方法,就是在草稿纸上画下来手推!

***

代码展示

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode reverseList(ListNode head) {if(head == null) return head;       // 空链表if(head.next == null) return head;  // 链表长度为1ListNode pre = null, cur = head, nex;       // 注意鲁棒性boolean flag = true;while(cur != null) {        // 当cur为null时,pre正好处于尾结点, 且当cur为null时,所有节点正好全部倒置nex = cur.next;cur.next = pre;pre = cur;cur = nex;}return pre;}
}

完整可运行代码

public class 剑指Offer24_反转链表 {static class ListNode{int val;ListNode next;ListNode(int v) { val = v; }}static class Solution{public ListNode reverseList(ListNode head) {if(head == null) return head;       // 空链表if(head.next == null) return head;  // 链表长度为1ListNode pre = null, cur = head, nex;       // 注意鲁棒性boolean flag = true;while(cur != null) {        // 当cur为null时,pre正好处于尾结点, 且当cur为null时,所有节点正好全部倒置nex = cur.next;cur.next = pre;pre = cur;cur = nex;}return pre;}}public static void main(String[] args) {ListNode l1 = new ListNode(1);ListNode l2 = new ListNode(2);ListNode l3 = new ListNode(3);ListNode l4 = new ListNode(4);l1.next = l2;l2.next = l3;l3.next = l4;Solution solution = new Solution();ListNode l = solution.reverseList(l1);System.out.println(l.val + " " + l.next.val + " " + l.next.next.val);}
}

木秀于林,风必摧之;堆出于岸,流必湍之;行高于人,众必非之。

【双100%解法】剑指 Offer 24. 反转链表相关推荐

  1. 《LeetCode力扣练习》剑指 Offer 24. 反转链表 Java

    <LeetCode力扣练习>剑指 Offer 24. 反转链表 Java 一.资源 题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1-& ...

  2. 【LeetCode】剑指 Offer 24. 反转链表

    剑指 Offer 24. 反转链表 文章目录 剑指 Offer 24. 反转链表 一.迭代 二.递归 总结 一.迭代 在遍历链表时,将当前节点的 next 指针改为指向前一个结点.由于结点没有引用其前 ...

  3. 剑指offer 24. 反转链表

    1.问题描述 输入一个链表的头结点,反转链表后,输出新链表的表头. 2. 解决思路 1)链表是空的:直接返回空的头结点: 2)链表中只有一个结点:直接返回原头结点: 3)链表中有大于2个以上的结点:需 ...

  4. 剑指 Offer 24.反转链表

    题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 题目链接:反转链表 示例: 输入: 1->2->3->4->5->NULL 输出: 5-& ...

  5. Leetcode 剑指 Offer 24. 反转链表 (每日一题 20210823)

    定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点.示例:输入: 1->2->3->4->5->NULL 输出: 5->4->3-> ...

  6. 剑指 Offer 24. 反转链表(C语言)

    **定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3- ...

  7. 【算法】剑指 Offer 24. 反转链表

    1.概述 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof 定义一个函数,输入一个链表的头节点, ...

  8. 剑指 Offer 24. 反转链表java

    定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3-&g ...

  9. 剑指Offer 24 反转链表

    迭代的思想就是利用pre和cur两个指针,然后逐步向后遍历 # Definition for singly-linked list. # class ListNode: # def __init__( ...

最新文章

  1. BeanShell中的Java指令和表达式
  2. 奇异值的物理意义是什么?强大的矩阵奇异值分解(SVD)及其应用
  3. 减少过敏反应的生活细节
  4. Linux下root密码丢失和运行级别错误的解决办法
  5. java异常体系_JAVA异常体系结构详解
  6. python eval函数格式_Python函数中eval函数知识点
  7. Initialization of bean failed; nested exception is org.springframework.beans.factory.: 错误分析
  8. 深度学习经典算法 | 蚁群算法解析
  9. linux中的 127.0.0.1和0.0.0.0和::
  10. 七个月自学进微软——我的编程算法学习心得
  11. ARM V8 SPEC B1 AArch64 Application level programer‘s Model
  12. 产品流程、开发流程、测试流程、运维流程、售前流程改进建议
  13. Django创建超级管理员用户
  14. python中从键盘输入五个单词输出以元音字母开头的单词_matlab中 从一个文本读出所有英文单词,并且把所有以元音字母开头的字母首字母 的代码怎么写...
  15. Maxent影响因子响应曲线重绘
  16. windows10 扩容C盘空间
  17. Dbeaver_ee使用mysql和mongodb
  18. 实用解析dmp文件内容
  19. oracle主键必须加分区字段,oracle分区表和主键关系
  20. 数据结构查找-7-7 词典 (15 分)

热门文章

  1. 《认清C++语言》的random_shuffle()和transform()算法
  2. NAT 及 NAT 打洞技术
  3. Shell程序设计 | 文本处理工具 :正则表达式、grep、sed、awk
  4. 数据结构与算法 | 计数排序
  5. 阿里技术:万级规模K8s如何管理?
  6. Netflix选择AVIF作为下一代图片压缩技术
  7. Mozilla发布最大公共语音数据集Common Voice
  8. Zoe Liu:被Chrome Media团队的专注精神感染
  9. JVM之盘点家底查看初始默认值和更改值
  10. Golang 性能优化实战