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

链表-24.两两交换链表中的结点-力扣(LeetCode)

一、题目解析

1、不能修改节点内部值

2、节点个数为[0,100]

二、算法原理

解法:循环(模拟)

1、结点个数特殊处理

当结点个数为0or1时,直接返回head即可

2、定义4个指针

tail、cur1、cur2和nnext,用于交换和链接前后节点

3、循环条件

观察到只有cur1和cur2都不为nullptr时,循环才会继续

4、cur1和cur2特殊情况判断

        1、cur1为nullptr时,可以跳出循环直接返回结果,即只有两个结点交换

        2、cur1不为nullptr时,更新cur2=cur1->next

        3、cur2为nullptr时,nnext不更新

        4、cur2不为nullptr时,更新nnext=cur2->next

5、返回结果

我们定义了哨兵位结点newhead,直接返回newhead->next

三、代码示例

class Solution {
public:ListNode* swapPairs(ListNode* head){if(head == nullptr || head->next == nullptr) return head;//0or1个节点ListNode* newhead = new ListNode();ListNode* tail = newhead;ListNode* cur1 = head;ListNode* cur2 = head->next;ListNode* nnext = cur2->next;while(cur1!=nullptr && cur2!=nullptr){tail->next = cur2;cur2->next = cur1;cur1->next = nnext;tail = cur1;cur1=cur1->next;if(cur1 == nullptr) break;else cur2 = cur1->next;if(cur2 != nullptr) nnext = cur2->next;}return newhead->next;    }
};

看到最后,如果对您有所帮助,还请点赞、收藏和关注,我们下期再见!

http://www.dtcms.com/a/340431.html

相关文章:

  • Spring Boot 3整合Nacos,配置namespace
  • 云计算学习100天-第26天
  • linux的sysctl系统以及systemd系统。
  • Linux + arm 内存属性
  • 静/动态库 IIC(arm) day58
  • 机器学习——网格搜索(GridSearchCV)超参数优化
  • Linux + arm 内存屏障
  • 商用厨房物联网智能化解决方案——打造环保、高效、安全的智慧餐饮新生态
  • C语言基础:(二十)自定义类型:结构体
  • 领码方案:通用物联网数据采集低代码集成平台——万物智联时代的黄金钥匙
  • 【Grafana】grafana-image-renderer配合python脚本实现仪表盘导出pdf
  • 车载软件架构 --- 赢得汽车软件开发竞赛
  • MySQL事务及原理详解
  • YAML格式笔记
  • SQL面试题及详细答案150道(41-60) --- 条件查询与分组篇
  • 【自记】Power BI 中 ALL、ALLSELECTED、ALLEXCEPT、ALLNOBLANKROW 的区别说明
  • 自学嵌入式第二十三天:数据结构(3)-双链表
  • SQL四大类命令(DQL、DML、DDL、DCL)
  • 第1课_Rust基础入门
  • Rust系统编程:从入门到实战的蜕变之旅
  • MySQL 数据与表结构导出 Excel 技术文档
  • 基础笔记8.20
  • Spring Cloud Gateway 负载均衡全面指南
  • 甘特图-项目可视化引擎|Highcharts.js 模块特征
  • Linux I/O 多路复用实战:Select/Poll 编程指南
  • Java主流框架全解析:从企业级开发到云原生
  • 通过自动化本地计算磁盘与块存储卷加密保护数据安全
  • 819 机器学习-决策树2
  • 学习threejs,打造宇宙星云背景
  • 芯科科技即将重磅亮相IOTE 2025深圳物联网展,以全面的无线技术及生态覆盖赋能万物智联