前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 24. 两两交换链表中的节点(递归+循环)

LeetCode 24. 两两交换链表中的节点(递归+循环)

作者头像
Michael阿明
发布2020-07-13 15:32:01
3460
发布2020-07-13 15:32:01
举报
文章被收录于专栏:Michael阿明学习之路

1. 题目

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

代码语言:javascript
复制
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.

2. 解题

2.1 递归

代码语言:javascript
复制
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
    	if(!head || !head->next)
    		return head;
        ListNode *hn = head->next;
		head->next = swapPairs(head->next->next);
		hn->next = head;
    	return hn;
    }
};

2.2 循环

代码语言:javascript
复制
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
    	if(!head || !head->next)
    		return head;
        ListNode *hn = head->next, *hnn = head->next->next;
		ListNode *newHead = hn, *prev = NULL;
		while(head && hn)
		{
			if(prev)
				prev->next = hn;
			hnn = hn->next;
			hn->next = head;
			head->next = hnn;
			prev = head;
			head = head->next;
			if(head)
				hn = head->next;
			else
				hn = NULL;
		}
		return newHead;
    }
};
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
    • 2.1 递归
      • 2.2 循环
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档