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

链表-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.xdnf.cn/news/18227.html

相关文章:

  • 绕过 C 标准库限制执行系统命令:系统调用、Shellcode 和裸机二进制
  • 税务专业人员能力构建与发展路径指南
  • Qt5多线程编程详细讲解
  • [递归回溯]679. 24 点游戏
  • 基于RK3568/J6412的EMU多网口控制主机,助力储能工业互联管理和运维
  • PyTorch 社区贡献 和 设计原则
  • 第5课_Rust生命周期和泛型
  • Android MVVM(Model-View-ViewModel)架构
  • 从零开始的云计算生活——第四十七天,细水长流,kubernetes模块之ingress资源对象
  • 23TaskExecutor初始化
  • 【ansible】4.实施任务控制
  • AI 伦理的 “灰色地带”:当算法拥有决策权,公平与隐私该如何平衡?
  • 工地智能安全带让高空作业更安全
  • Kafka如何保证消费确认与顺序消费?
  • gcc 与 g++ 的区别:本身不是编译器而是编译器驱动
  • 数据库优化提速(一)之进销存库存管理—仙盟创梦IDE
  • 【Tech Arch】Apache Pig大数据处理的高效利器
  • 【JavaEE】多线程 -- 线程池
  • 基于单片机太阳能充电器/太阳能转换电能
  • 30. 技术专题-锁
  • HTTP的协议
  • .gitignore 文件 记录
  • Linux服务器性能优化总结
  • 【Tech Arch】Apache HBase分布式 NoSQL 数据库
  • redis---常用数据类型及内部编码
  • 如何低比特量化算法的工程实战与落地优化
  • 【考研408数据结构-08】 图论基础:存储结构与遍历算法
  • 让Chrome信任自签名证书
  • AI时代下阿里云基础设施的稳定性架构揭秘
  • C#海康SDK—热成像测温篇