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

LeetCode 24.两两交换链表中的结点

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目解析

        首先可以特判一下,如果结点数目小于等于1,则直接返回即可,因为数目小于等于1就不需要交换了。

        然后我们可以创建一个虚拟的头结点,然后如图所示定义几个结点指针,经过图中的顺序进行交换结点,然后将结点依次向后遍历。

        同时我们也要注意cur和next不能为nullptr,若为nullptr就不需要交换。 

 

代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution 
{
public:ListNode* swapPairs(ListNode* head) {if(head==nullptr||head->next==nullptr) return head;ListNode* phead=new ListNode(-1);phead->next=head;// head->1->2->3->4//prev->cur->next->nnext// head->2->1->4->3//prev->next->cur->nnextListNode*prev=phead,*cur=phead->next,*next=cur->next,*nnext=next->next;ListNode* ans=phead->next;// 注意cur和next不能为nullptrwhile(cur&&next){// 交换结点prev->next=next;next->next=cur;cur->next=nnext;// 修改指针// 一定注意顺序prev=cur;cur=nnext;// 注意cur和next不能为nullptrif(cur) next=cur->next;if(next) nnext=next->next;}cur=phead->next;delete phead;return cur;}
};

http://www.lryc.cn/news/188040.html

相关文章:

  • 【每日一记】OSPF区域划分详讲、划分区域的优点好处
  • 复旦管院启动科创战略,培养科技研发人才,引领未来发展!
  • Infinity同步
  • C语言:转义字符
  • 为什么 0.1 + 0.1 !== 0.2
  • 超详细!主流大语言模型的技术原理细节汇总!
  • 本人4年测试经验,211 本科计算机专业,由于互联网裁员,然后谈谈我最近测试面试的总结
  • Android中级——Activity数据恢复过程
  • 国内就能使用的chatgpt网页版,包含AIGC应用工具
  • Fast DDS之RTPS
  • 【算法|动态规划No.16】leetcode931. 下降路径最小和
  • Jenkins 构建时动态获取参数
  • android app开机自启动
  • XSS CSRF
  • 新加坡星银行项目组笔试题面试题
  • 基于SpringBoot的智能物流管理系统
  • 【开源电商网站】(2),使用docker-compose和dockerfile进行配置,设置自定义的镜像,安装插件,增加汉化包,支持中文界面汉化。
  • HTML5开发实例-3D全景(ThreeJs全景Demo) 详解(图)
  • springboot项目静态资源映射
  • 【Linux初阶】多线程1 | 页表的索引作用,线程基础(优缺点、异常、用途),线程VS进程,线程控制,C++多线程引入
  • Flink--9、双流联结(窗口联结、间隔联结)
  • 家政服务行业做开发微信小程序可以实现什么功能
  • 20哈希表-三数之和
  • JVM 运行时数据区和垃圾收集算法
  • Java基于SpringBoot的高校招生系统
  • 6. Python使用Asyncio开发TCP服务器简单案例
  • 景联文科技:AI大模型强势赋能,助力自动驾驶迭代升级
  • 多周期CPU设计
  • Go 复合类型之字典类型介绍
  • 对于无法直接获取URL的数据爬虫