Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given1->2->3->4
, you should return the list as2->1->4->3
.
Your algorithm should use only constant space. You maynotmodify the values in the list, only nodes itself can be changed.
入门题,注意:
1 保存next节点
2 需要使用三个节点指针
3 保存好链表头指针
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *swapPairs(ListNode *head)
{
if (!head || !head->next) return head;
ListNode *pre = head->next;
ListNode *cur = pre->next;
pre->next = head;
head->next = cur;
head = pre;
pre = pre->next;
while (pre)
{
ListNode *post;
cur = pre->next;
if (cur && cur->next) post = cur->next;
else break;
pre->next = post;
pre = post->next;
post->next = cur;
cur->next = pre;
pre = cur;
}
return head;
}
};
2014-1-25 update
ListNode *swapPairs(ListNode *h)
{
ListNode dummy(0);
dummy.next = h;
ListNode *pre = &dummy;
while (h && h->next)
{
ListNode *t = h->next->next;
pre->next = h->next;
h->next->next = h;
h->next = t;
pre = h;
h = t;
}
return dummy.next;
}
分享到:
相关推荐
python python_leetcode面试题解之两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.ListNode dummy =
c语言 c语言_c语言编程基础之leetcode题解第24题两两交换链表中的节点
c++ c++_c++编程基础之leetcode题解第24题两两交换链表中的节点
python python_leetcode面试题解之第24题两两交换链表中的节点_python题解
# 删除链表的倒数第N个节点 题目链接给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和
c++ c++_c++编程基础之leetcode题解第61题旋转链表
c语言 c语言_c语言编程基础之leetcode题解第19题删除链表的倒数第N个结点
c++ c++_c++编程基础之leetcode题解第19题删除链表的倒数第N个结点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 ''' class ListNode(object): def __init__(self, x): self.val = x self.next =...
两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例 1:输出:[2,1,4,3]示例 2:输出:[]示例 3:输出:[1]* D
python python_leetcode面试题解之删除链表的倒数第N个节点
删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。示例 1:输出:Reference of the nod
两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交和142.环形链表II。记录了清晰的文字题解+图示以及Java参考代码。 适合人群:链表算法感兴趣的程序员或学生,想要打好数据结构与算法基础的...
在JavaScript中,链表通常通过构建一个ListNode类来表示,其中包含val和next两个属性,分别表示节点的值和指向下一个节点的指针。反转链表的基本思路是遍历原链表,逐个节点地更改它们的next指针,将它们指向前一个...
leetcode-链表笔记
示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3链接:https://leetcode-cn.
第四章 Leetcode 题解 1. Two Sum 2. Add Two Numbers 3. Longest Substring Without Repeating Characters 4. Median of Two Sorted Arrays...24. Swap Nodes in Pairs 25. Reverse Nodes in k-Group 26. Remove Dupli
链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。Related Topics链表题目代码* Definition for singly-link