(leetcode)力扣100 23反转链表(迭代||递归)

题目

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

数据范围

链表中节点的数目范围是 [0, 5000]

-5000 <= Node.val <= 5000

测试用例

示例1

java 复制代码
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例2

java 复制代码
输入:head = [1,2]
输出:[2,1]

示例3

java 复制代码
输入:head = []
输出:[]

题解1(时间On空间O1)

java 复制代码
/**
 * 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 pre=null;
        ListNode cur=head;
        while(cur!=null){
            ListNode next= cur.next ;
            cur.next=pre;
            pre=cur;
            cur=next;    
        }
        return pre;
    }
}

题解2(时空On)

java 复制代码
    public ListNode reverseList(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode newHead = reverseList(head.next);
        head.next.next = head;
        head.next = null;
        return newHead;
    } }

`
## 思路
这道题感觉没必要讲啥思路了,最经典最基础数据结构链表翻转的两个方法,能理解就好,不能理解背就完了!!
相关推荐
一起努力啊~3 分钟前
算法刷题--哈希表
算法·面试·散列表
willingli9 分钟前
c语言经典100题 61-70题
c语言·开发语言·算法
我是小疯子6613 分钟前
深入解析C++右值引用与移动语义
java·开发语言·算法
踩坑记录15 分钟前
leetcode hot100 56.合并区间 medium
leetcode
源代码•宸23 分钟前
Golang原理剖析(Map 源码梳理)
经验分享·后端·算法·leetcode·golang·map
程序员-King.25 分钟前
day132—链表—K个一组翻转链表(LeetCode-25)
leetcode·链表·贪心算法
Narrastory29 分钟前
手把手实现蚁群算法:从数学原理到代码实践
算法
mit6.82439 分钟前
八皇后变题hash|网格dp
算法
bybitq1 小时前
LeetCode-437-路径总和3
算法
鱼跃鹰飞1 小时前
Leetcode尊享面试100题:1060. 有序数组中的缺失元素
算法·leetcode·面试