leetcode之路024 Swap Nodes in Pairs
2015-08-16 06:51
567 查看
题目大意:给定一个链表,交换每两个邻接的节点。例:
给定
应该返回
算法应该用常量空间,不能修改链表的值,只能修改节点本身。
上述要求,也就是,只能改变链表next的指向,不能交换节点元素的值来达到目的。交换值的话就非常简单了。
思路:
1、用三个链表指针即可,一个保存结果链表头。另两个移动找到相邻元素并交换指向。
对于任意两个元素,交换操作为以下六步:
下面是ac的代码,运行时间为4ms:
给定
1->2->3->4,
应该返回
2->1->4->3.
算法应该用常量空间,不能修改链表的值,只能修改节点本身。
上述要求,也就是,只能改变链表next的指向,不能交换节点元素的值来达到目的。交换值的话就非常简单了。
思路:
1、用三个链表指针即可,一个保存结果链表头。另两个移动找到相邻元素并交换指向。
对于任意两个元素,交换操作为以下六步:
下面是ac的代码,运行时间为4ms:
class Solution { public: ListNode* swapPairs(ListNode* head) { if(head==NULL) return NULL; ListNode* l1=new ListNode(0),*l2; ListNode* resu=l1; l1->next=head; l2=l1->next; while(l1->next&&l2->next) { l1->next=l2->next; l1=l1->next; l2->next=l1->next; l1->next=l2; l2=l2->next; l1=l1->next; } return resu->next; } };
相关文章推荐
- node_modules文件夹路径太长无法删除
- LeetCode(237)Delete Node in a Linked List
- LeetCode(237)Delete Node in a Linked List
- elnode入门
- [Leetcode] Populating Next Right Pointers in Each Node I,II
- LeetCode - Populating Next Right Pointers in Each Node II 及其变形题
- nodejs使用md5带秘钥加密
- 2031-9百度技术沙龙:Clouda与nodejs
- Node.js压缩web项目中的js,css和图片
- LeetCode Delete Node in a Linked List 刷题 OJ 算法
- nodejs 各实时通讯模块(webSocket)性能测试
- 玩转Node.js - 03. 第一个I/O!
- Node.js开发入门—使用AngularJS内置服务
- 【 LightOJ - 1094】Farthest Nodes in a Tree(求树的直径)链式向前星 + DFS or BFS
- [转]XML中元素(Element)与节点(Node)的区别
- 《Node即学即用》—— 读后总结
- Leetcode -- Swap Nodes in Pairs
- 【集群问题解决】Hbase的"Failed deleting my ephemeral node"错误解决
- leetcode:Remove Nth Node From End of List
- Node.js开发之环境建立