当前位置: 首页 > news >正文

代码随想录:206. 反转链表

206. 反转链表

创建头结点,使用头插法,并用新的结点保存值插入里面。
空间复杂度O(n2)

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode reverseList(ListNode head) {ListNode h=new ListNode();while(head!=null){ListNode t= new ListNode(head.val,head.next);head=head.next;t.next=h.next;h.next=t;}return h.next;}
}

空间复杂度O(1)

如果我们用变量把下一个位置保存起来,就可以对当前位置随意更改了,原地更改后,更新遍历指针即可。这里我采用head遍历,t临时存放下一个位置

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode reverseList(ListNode head) {ListNode h=new ListNode();ListNode t=null;while(head!=null){t=head.next;head.next=h.next;h.next=head;head=t;}return h.next;}
}

递归

cur存已经反转好的后面的链表,head.next指向的为末尾的,把自己接上即可,再把尾巴置null。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {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;}
}

http://www.mrgr.cn/news/58066.html

相关文章:

  • 微信小程序流量主
  • 【Flutter】基础入门:Widgets
  • Java Http 接口对接太繁琐?试试 UniHttp 框架吧
  • es索引库操作和使用RestHignLevelClient客户端操作es
  • 见证 RTE 的新篇章丨 RTE 年度场景 Showcase 暨第四届 RTE 创新大赛开幕
  • tomcat安装启动配置以及乱码问题
  • 走进Java中的class文件
  • xtu oj String I
  • 数据库表开发 vs 面向接口开发
  • 结合PS软件制作一个艺术PCB的图片处理
  • 什么是RPC
  • [ 钓鱼实战系列-基础篇-7 ] 一篇文章教会你搭建邮件钓鱼服务器-2
  • 小渡Al论文写作:50个GPT学术指令——1天搞定1篇论文
  • 硬件基础知识补全计划【一】电阻
  • mysqld.log文件过大,清理后不改变所属用户
  • Flutter结合鸿蒙next 中数据类型转换的高级用法:dynamic 类型与其他类型的转换解析
  • 【C++】四种强制类型转换
  • mongodb在linux下的部署
  • 在 Flutter鸿蒙next版本 中使用 if 语句和三元表达式进行视图逻辑判断
  • Unity之如何在Linux上部署Dedicated Server专用服务器
  • 函数柯里化
  • 头歌——人工智能(搜索策略)
  • 【LeetCode】11.盛最多水的容器
  • 【福建医科大学附属第一医院-注册安全分析报告】
  • 优雅/灵活 地定制tkinter按钮样式
  • 在Windows 10操作系统中搭建FTP