打卡群2刷题总结1007——反转链表
时间:2022-07-26
本文章向大家介绍打卡群2刷题总结1007——反转链表,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
leetcode第206题:反转链表
https://leetcode-cn.com/problems/reverse-linked-list/
【题目】
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
【思路】
使用三个指针p、q、r,指向三个相邻的节点,其中p.next为q,q.next为r。
修改q的指针指向,并且移动p、q、r三个指针,即q.next = p,p = q, q = r,r = r.next。不断循环,并注意修改head.next及head,即可实现链表翻转。
【代码】
python版本
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
# head为空
if not head:
return head
# p、q、r为相邻三个节点
# q.next指向p,同时三个指针后移
p, q, r = head, head.next, head
while q:
r = q.next
q.next = p
p = q
q = r
# 修改head.next及head
head.next = None
head = p
return p
【相似题目】
92. 反转链表 II
解题思路:先找到第m - 1个节点,再对第m到n个节点进行翻转。
234. 回文链表
解题思路:对链表的后半部分进行翻转,再判断前后半部分对应的每个元素是否相等。
- HTTP协议漫谈
- 关于 Android N 那些你不知道的事儿
- golang实现ping命令
- socket编程小问题:地址已经被使用——Address already in use
- 如何使用golang实现操作键盘按键
- 黑科技:程序员如何打造属于自己的分体键盘
- Go语言实现socket实例
- go语言实现sqrt的方法
- Go语言实现set
- Docker新手入门实战教程
- Python远程控制模块paramiko遇到的问题及解决记录
- Windows下bat批处理脚本使用telnet批量检测远程端口小记
- WordPress集成PHP缩略图,并开启Nginx缓存的方法
- 分享几个WordPress本地缓存gravatar评论头像的方案
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ThreadLocal全面解析
- tomcat类加载机制了解一下
- tomcat-超详细的启动流程(init)
- tomcat-超详细的启动流程(start)
- NIO学习(一)Buffer缓冲区
- NIO学习(二)Channel通道与Selectors选择器
- Spring学习(一)bean的初始化过程
- Spring学习(二)bean的循环依赖
- Spring学习(三)后置处理器BeanPostProcessor
- Spring学习(四)AOP基础
- Spring知识点(五)代理模式
- Spring知识点(六)bean的生命周期
- Mybatis源码学习(一)SqlSessionFactoryBuilder
- 小程序工具初探
- NotePad++小试