LeetCode24. 两两交换链表中的节点
2021/5/16 10:55:10
本文主要是介绍LeetCode24. 两两交换链表中的节点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
LeetCode24. 两两交换链表中的节点
题目描述
/** * * 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 * <p> * 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 * */
思路分析
- 使用迭代的思想,依次将两两节点进行交换
- 此题目中head节点指向一个非空的元素,因此可以定义一个空节点,作为交换后节点的头节点,因此先构造一个以空节点开头的新节点,然后依次两两交换
- 注意节点元素的指向发生变化时,按照顺序将指向发生变化
- 分析如下
源码及分析
public ListNode swapPairs(ListNode head) { //数据校验 if (head == null || head.next == null) { return head; } //定义一个辅助头节点指向原始的链表,形成一个带有头节点的新链表,然后操作新链表 ListNode newHead = new ListNode(); newHead.next = head; //因为头节点newHead不能动,定义一个辅助变量cur ListNode cur = newHead; //循环交换 while (cur.next != null && cur.next.next != null) { //定义两个辅助变量保存要交换的两个节点 ListNode node1 = cur.next; ListNode node2 = cur.next.next; //定义一个临时变量用于交换 cur.next = node2; node1.next = node2.next; node2.next = node1; //指针后移,使cur始终指向要交换的节点的前一个节点 cur = node1; } return newHead.next; }
这篇关于LeetCode24. 两两交换链表中的节点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding
- 2024-06-23AI大模型企业应用实战(15)-langchain核心组件
- 2024-06-23AI大模型企业应用实战(16)-langchain核心组件
- 2024-06-23AI 大模型企业应用实战(06)-初识LangChain
- 2024-06-19EntBot.ai: AI Website Chatbot for Product Guides and Development Doc
- 2024-06-17zero-shot-learning-definition-examples-comparison
- 2024-06-06Package Easy(基于 NSIS 的打包exe安装包工具)使用方法-icode9专业技术文章分享
- 2024-06-06基于 casdoor 的 ELK 开源登录认证解决方案: elk-auth-casdoor-icode9专业技术文章分享
- 2024-05-29Elasticsearch慢查询日志配置