力扣--LCR 141.训练计划III

题目

给定一个头节点为 head 的单链表用于记录一系列核心肌群训练编号,请将该系列训练编号 倒序 记录于链表并返回。

示例 1:

输入:head = [1,2,3,4,5]

输出:[5,4,3,2,1]

示例 2:

输入:head = [1,2]

输出:[2,1]

示例 3:

输入:head = []

输出:[]

提示:

复制代码
链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000

代码

/**

  • 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 trainningPlan(ListNode head) {

    if(headnull||head.nextnull){

    return head;

    }

    ListNode cur = head, pre = null;

    复制代码
     while(cur != null){
         ListNode temp = cur.next;
         cur.next = pre;
         pre = cur;
         cur = temp;
     }
    
     return pre;

    }

    }

    时间复杂度:O(N)

    额外空间复杂度 O(1)

递归

// 递归

public ListNode reverseList(ListNode head) {

if(head == null || head.next == null){

return head;

}

// 反转子链表

ListNode temp = reverseList(head.next);

head.next.next = head;

head.next = null;

复制代码
    return temp;
}

时间复杂度:O(N)

额外空间复杂度 O(n),递归调用需要消耗栈空间

相关推荐
Cx330❀13 分钟前
【优选算法必刷100题】第43题(模拟):数青蛙
c++·算法·leetcode·面试
杜子不疼.13 分钟前
【LeetCode30_滑动窗口 + 哈希表】:三招搞定“串联所有单词的子串”
数据结构·算法·哈希算法
闻缺陷则喜何志丹13 分钟前
【C++动态规划 状压dp】1879. 两个数组最小的异或值之和|2145
c++·算法·动态规划·力扣·数组·最小·动态规范
艾莉丝努力练剑18 分钟前
【优选算法必刷100题:专题五】(位运算算法)第033~38题:判断字符是否唯一、丢失的数字、两整数之和、只出现一次的数字 II、消失的两个数字
java·大数据·运维·c++·人工智能·算法·位运算
光羽隹衡18 分钟前
机器学习——DBSCAN算法
人工智能·算法·机器学习
vyuvyucd18 分钟前
Java数组与Arrays类实战指南
数据结构·算法
csuzhucong18 分钟前
七彩鹦鹉螺魔方
算法
逝川长叹19 分钟前
利用 SSI-COV 算法自动识别线状结构在环境振动下的模态参数研究(Matlab代码实现)
前端·算法·支持向量机·matlab
山上三树19 分钟前
详细介绍 C 语言中的匿名结构体
c语言·开发语言·算法
EXtreme3520 分钟前
【数据结构】彻底搞懂二叉树:四种遍历逻辑、经典OJ题与递归性能全解析
c语言·数据结构·算法·二叉树·递归