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

金湖网站制作免费电子版个人简历模板

金湖网站制作,免费电子版个人简历模板,网络服务网站建设,谷歌浏览器手机版原题链接🔗:反转链表 难度:简单⭐️ 题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2:…

原题链接🔗:反转链表
难度:简单⭐️

题目

给你单链表的头节点 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

进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

题解

迭代法

  1. 题解

有两种常见的方法来解决这个问题:迭代和递归。

  • 迭代方法
    • 初始化三个指针:prev 初始化为 nullptr(因为反转后的链表第一个节点的 next 应该是nullptr),current 初始化为头节点 head,next 用于临时存储下一个节点。
    • 遍历链表:使用一个循环,当 current 不为 nullptr 时,执行以下操作:
      • 保存 current 的下一个节点到 next。
      • 将 current 的 next 指向 prev,实现反转。
      • 更新 prev 和 current 为下一个节点:prev = current,current = next。
    • 当循环结束时,prev 将指向反转后的头节点,返回 prev。
  • 递归方法
    • 基本情况:如果 head 是 nullptr 或者 head->next 是 nullptr,说明链表为空或只有一个节点,直接返回 head。
    • 递归反转:递归调用 reverseList 函数,传入 head->next 作为参数,获取反转后的链表的头节点。
    • 重新链接节点:将当前节点 head 的下一个节点的 next 指向 head,实现反转。
    • 设置当前节点的 next 为 nullptr:防止链表形成环。
    • 返回新的头节点:递归调用返回的头节点。
  1. 复杂度:时间复杂度O(n),空间复杂度O(1)。
  2. 过程:迭代法如下代码。
  3. c++ demo
#include <iostream>// 定义链表节点
struct ListNode {int val;ListNode* next;ListNode(int x) : val(x), next(nullptr) {}
};// 解决方案类
class Solution {
public:// 迭代方法反转链表ListNode* reverseList(ListNode* head) {ListNode* prev = nullptr;ListNode* current = head;ListNode* next = nullptr;while (current != nullptr) {next = current->next; // 保存下一个节点current->next = prev; // 反转当前节点的指针prev = current;       // 移动prev到当前节点current = next;       // 移动current到下一个节点}return prev; // 返回新的头节点}
};// 主函数,用于演示
int main() {Solution solution;// 创建一个示例链表: 1 -> 2 -> 3 -> 4 -> 5ListNode* head = new ListNode(1);head->next = new ListNode(2);head->next->next = new ListNode(3);head->next->next->next = new ListNode(4);head->next->next->next->next = new ListNode(5);// 打印原始链表std::cout << "Original List: ";ListNode* current = head;while (current != nullptr) {std::cout << current->val << " -> ";current = current->next;}std::cout << "nullptr" << std::endl;// 反转链表ListNode* reversedHead = solution.reverseList(head);// 打印反转后的链表std::cout << "Reversed List: ";current = reversedHead;while (current != nullptr) {std::cout << current->val << " -> ";current = current->next;}std::cout << "nullptr" << std::endl;// 释放链表内存while (reversedHead != nullptr) {ListNode* tmp = reversedHead;reversedHead = reversedHead->next;delete tmp;}return 0;
}
  • 输出结果:

Original List: 1 -> 2 -> 3 -> 4 -> 5 -> nullptr
Reversed List: 5 -> 4 -> 3 -> 2 -> 1 -> nullptr
在这里插入图片描述

http://www.yayakq.cn/news/378138/

相关文章:

  • 我的网站怎么做成都住建局官网查询
  • 网站下拉广告房屋在线设计平台
  • 有哪些网站可以做推广包包电商网站建设电话
  • 赣州新闻头条免费的关键词优化工具
  • 南京明月建设集团网站承德教育信息网官网
  • 贵阳网站页面设计安徽省建设厅官网查询
  • 室内设计师网站十大网站网站后台 搜索
  • 端端网站开发大宗商品现货交易平台排名
  • 定制网站建设公司策划书网页怎么制作成二维码
  • 深圳网站建设如何制作学校网站建设规范
  • 做网站服务器应该怎么配置哈尔滨网站建设有限公司
  • 东道网站建设网站首页适配规则
  • 成都网站建设推广详为什么需要响应式网站
  • 建筑行业一般在哪个网站招聘锦州市网站建设
  • 台州网站排名外包长沙建设工程造价网
  • 小公司做网站做云盘网站哪个好
  • 网站突然没收录了搬家公司怎么做网站
  • 有哪些外贸公司网站做的比较好批量域名注册查询
  • 网站建设服务器租用网站做软件有哪些
  • flash源码网站网站目录架构
  • 建设部建设厅报考网站松阳建设局网站
  • 网站专栏怎么做漂亮广西网络推广公司哪家好
  • 东莞外贸网站搭建制作免费seo排名工具
  • 企业网站模板哪里好个人博客系统毕业设计论文
  • 单位建设网站的请示南昌为来创意网站建设公司
  • 公司要招个做网站的人互联网信息平台
  • 沈阳网站建设设计报价英文旅游网站建设
  • 赣州市建设局网站做网站要提供什么
  • 济南手机网站建设电话青海省高等级公路建设管理局网站
  • 遵义做网站推广wordpress页面的模板