Blage's Coding Blage's Coding
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
  • 数组

  • 链表

    • 206.反转链表
      • 1.头插法
      • 2.原地逆置
    • 148.排序链表(归并、快排)
    • 25.K个一组翻转链表
    • 21.合并两个有序链表
    • 141.环形链表
    • 160.相交链表
    • 92.反转链表Ⅱ
    • 142.环形链表Ⅱ
    • 23.合并k个升序链表
    • 138.复制带随机指针的链表
    • 234. 回文链表
    • 1171. 从链表中删去总和值为零的连续节点
    • 剑指offer22
    • 剑指 Offer 35. 复杂链表的复制
  • 字符串

  • 二叉树

  • 动态规划

  • 深搜回溯

  • 数学贪心

  • 堆栈队列

  • 前缀和

  • 算法设计

  • 位运算

  • WA

  • 算法
  • 链表
phan
2023-05-16
目录

206.反转链表

# 206.反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

  1. 一开始用的头插法进行原地逆置,后来发现他这个题目给的是头指针不是头结点,所以手动new一个头结点ListNode h1=new ListNode(0,head);用头插法时要注意,第一次插入时head.next是等于p的,如果这时候令p.next=head.next会出现环,导致Error - Found cycle in the ListNode错误。因此第一次插入要进行判断:

     if(h1.next!=p)
         p.next=h1.next;
     else
         p.next=null;
    
    1
    2
    3
    4
  2. 另一种思路是不动结点,每次仅改变链表中两个结点之间next指向,最终全部都反着指。初始res设置为空,好处在于不用考虑第一个结点(最终变成next为空的最后一个节点)的情况。 在这里插入图片描述

# 1.头插法

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode node=new ListNode(-1);
        node.next=head;
        if(head==null) return null;
        ListNode p=head,q=head.next;
        p.next=null;
        while(q!=null){
            ListNode temp=q.next;
            q.next=p;
            node.next=q;
            p=q;
            q=temp;
        }
        return node.next;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 2.原地逆置

class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null) return null;
        ListNode p=null,q=head,next=head.next;
        while(q!=null){
            q.next=p;
            p=q;
            q=next;
            if(next==null)break;
            next=next.next;
        }
        return p;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
编辑 (opens new window)
#Leetcode#链表
上次更新: 2023/12/15, 15:49:57
2276. 统计区间中的整数数目
148.排序链表(归并、快排)

← 2276. 统计区间中的整数数目 148.排序链表(归并、快排)→

Theme by Vdoing | Copyright © 2023-2024 blageCoder
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式