lintcode——两两交换链表中的节点
来源:互联网 发布:女生舍不得买衣服知乎 编辑:程序博客网 时间:2024/06/05 09:08
1.题目
给一个链表,两两交换其中的节点,然后返回交换后的链表。
给出1->2->3->4
, 你应该返回的链表是2->1->4->3
。
2.思路
一开始看到这个题就在纠结到底是两两交换节点还是只交换值,因为觉得交换值更简单就直接上手了。
首先考虑判断空链表;然后考虑链表非空的情况,因为要两两交换值,不能忘了判断head->next非空,对每一对节点,中间使用临时存放值的变量:p下一个的值给临时变量,p的值给p的下一个,临时变量给p,这样就完成了一对数交换;然后p下移,循环上一对节点值交换的思路。
3.代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
/**
* @param head a ListNode
* @return a ListNode
*/
ListNode* swapPairs(ListNode* head) {
// Write your code here
if(head==NULL)
{ return head;}
ListNode *p=head;
while(p!=NULL&&p->next!=NULL)
{
int T;
T=p->next->val;
p->next->val=p->val;
p->val=T;
p=p->next->next;
}
return head;
}
};
4.感想
感觉交换值没多大技术含量,其实交换节点也挺简单的,再增加两个指针,类似交换值一样循环一圈完成每对的交换就ok了,不过交换节点的运行时间要比直接换值长一些。总的说,这道题真的很简单!
- lintcode——两两交换链表中的节点
- LintCode:两两交换链表中的节点
- LintCode 两两交换链表中的节点
- 两两交换链表中的节点-LintCode
- Lintcode 451.两两交换链表中的节点
- LintCode-两两交换链表中的节点
- lintcode 451 两两交换链表中的节点
- [LintCode 451] 两两交换链表中的节点(Python)
- LintCode算法 两两交换链表中的节点
- 两两交换链表中的节点-LintCode
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 344. Reverse String
- 点分治 POJ 1741 Tree
- iOS学习之sqlite的创建数据库,表,插入查看数据
- HTTP代理协议 HTTP/1.1的CONNECT方法
- 1.Git对象模型
- lintcode——两两交换链表中的节点
- 理解java虚拟机 精华总结
- Android中使用@hide成员
- Java中时间格式的转换
- HTTP和HTTPS详解
- Android面试系列之事件分发
- 资源分享-教程:linux下安装lnamp环境
- 292. Nim Game
- linux初学笔记(1)简单的登陆与使用