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

如何做个购物网站莱芜二手房

如何做个购物网站,莱芜二手房,关键词排名怎么上首页,domino 网站开发明明是道简单题,却是众多公司最爱考的题之一。所以要按题目里的进阶用迭代和递归的方式完成 题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出…

明明是道简单题,却是众多公司最爱考的题之一。所以要按题目里的进阶用迭代和递归的方式完成

题目:

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

思路:

        基本思路其实就是遍历链表,在遍历过程中,将当前节点的 next 指针指向前一个节点,然后更新前一个节点和当前节点,继续遍历下一个节点,直到遍历完整个链表。重要的是写代码的方式。

代码实现:

(1)迭代 

class Solution {
public:ListNode* reverseList(ListNode* head) {// 这个指针将用于记录当前节点的前一个节点,在反转过程中会不断更新ListNode* prev = nullptr;// 这个指针将用于遍历链表,从链表的头节点开始ListNode* curr = head;//只要 curr 指针不为 nullptr,就表示链表还没有遍历完while (curr != nullptr) {// 因为在反转过程中,curr->next 会被修改,所以需要提前保存下一个节点的信息ListNode* nextNode = curr->next;// 将当前节点 curr 的 next 指针指向前一个节点 prevcurr->next = prev;// 更新 prev 指针,将其指向当前节点 currprev = curr;// 更新 curr 指针,将其指向下一个节点 nextNodecurr = nextNode;}return prev;}
};

复杂度分析

  • 时间复杂度:O(n),其中 n 是链表的长度。需要遍历链表一次。
  • 空间复杂度:O(1),只使用了常数级的额外空间。

(2) 递归

        对于反转链表而言,递归的核心在于假设链表从第 k+1 个节点开始的部分已经反转完成,那么只需将第 k 个节点正确接入反转后的部分,就能完成整个链表的反转。

class Solution {
public:ListNode* reverseList(ListNode* head) {// 递归终止条件:链表为空或只有一个节点,直接返回该节点if (head == nullptr || head->next == nullptr) {return head;}// 递归反转当前节点之后的链表ListNode* newHead = reverseList(head->next);// 将当前节点的下一个节点的 next 指针指向当前节点head->next->next = head;// 当前节点的 next 指针置为 nullptrhead->next = nullptr;return newHead;}
};

代码解释

  1. 递归终止条件:当链表为空或者只有一个节点时,不需要进行反转,直接返回该节点。
  2. 递归调用:递归调用 reverseList 函数来反转当前节点之后的链表,得到反转后的新头节点。
  3. 调整指针:将当前节点的下一个节点的 next 指针指向当前节点,同时将当前节点的 next 指针置为  nullptr
  4. 返回新头节点:返回反转后的新头节点

复杂度分析

  • 时间复杂度:O(n),这里的 n 是链表的长度。因为需要对链表中的每个节点进行一次递归操作。
  • 空间复杂度:O(n),主要是递归调用栈的空间开销,递归的深度最大为链表的长度 n。 
http://www.dtcms.com/wzjs/835596.html

相关文章:

  • 怎么把文件发送到网站成都网站建设科技公司
  • 四个字网站 域名WordPress更换域名之后
  • 福州网站建设出格南通网站建设知识
  • 网站的站长是什么意思网络规划设计师待遇怎么样
  • 台州做网站电话dreamviewer网页设计
  • 设计公司取名大全最新版的株洲网站优化找哪家
  • 广州番禺建网站微信推广平台哪家好
  • 佛山哪里有做网站的支付网站建设
  • 如何进行网站域名解析英文网站的首页怎么做
  • 网站建设丷金手指专业十五周口高端网站建设
  • 典型的电子商务网站西安电子商务网站开发
  • 上海wordpress网站建设驻马店 市网站建设
  • 服务器如何架设网站学校网站建设与维护
  • 小企业网站推广一级造价工程师报考条件及时间
  • 二级建造师最好的网站手机付费咨询网站建设
  • 湖南响应式网站建设推荐软件商店正版下载
  • 手机端网站外部链接如何去优化河北石家庄最新数据消息
  • 广汉做网站如何给WordPress网站更换域名
  • 知名网站开发哪里有wordpress 截取文章内容
  • 网站首页动画怎么做的大学生旅游网站策划书
  • 域名怎么创建网站磁力链搜索引擎入口
  • 网站建设基本技术网络营销项目策划方案
  • asp网站建设 文献wordpress图设置
  • 网站找人做的他能登管理员吗智能行业网站模板
  • seo线上培训多少钱邯郸seo优化公司
  • 公众微信绑定网站帐号网站开发公司的
  • 购物手机网站怎么做域名备案关闭网站
  • 网站运营 网站建设昌平装修公司哪家好
  • h5可以做网站么做网站的盈利模式
  • 学校网站建设工作领导小组企业网站开发环境