leetcode:Swap Nodes in Pairs
2016-02-19 15:19
218 查看
Given a linked list, swap every two adjacent(相邻的) nodes and return its head.
For example,
Given
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
分析:题意为给予一个链表,交换相邻的两个节点然后返回头结点。要求算法空间复杂度为O(1).
思路:新建一个链表每次插入temp->next后再插入temp,注意要判断若最后只剩下一个节点则不需要交换,每次交换了节点要把尾节点的下一个指向空。
代码:
For example,
Given
1->2->3->4, you should return the list as
2->1->4->3.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
分析:题意为给予一个链表,交换相邻的两个节点然后返回头结点。要求算法空间复杂度为O(1).
思路:新建一个链表每次插入temp->next后再插入temp,注意要判断若最后只剩下一个节点则不需要交换,每次交换了节点要把尾节点的下一个指向空。
代码:
/** * 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==NULL || head->next==NULL) return head; ListNode *helper=new ListNode(0); ListNode *temp=head; ListNode *cur=helper; while(temp && temp->next) { ListNode *next=temp->next->next; cur->next=temp->next; cur=cur->next; cur->next=temp; cur=cur->next; cur->next=NULL; temp=next; } if(temp) cur->next=temp; return helper->next; } };
相关文章推荐
- Node.js 之Buffer缓冲区
- nodejs学习笔记一
- nodejs学习路线图
- leetcode笔记--Delete Node in a Linked List
- node.js学习笔记之babel使用
- NodeJS中使用swig模板引擎
- node学习之第一个接口,简单的登录验证
- leetcode笔记--Remove Nth Node From End of List
- LeetCode - 25. Reverse Nodes in k-Group
- Node.js
- LeetCode - 24. Swap Nodes in Pairs
- namenode fsimage edits
- node查询mySql表
- windows下node.js环境配置
- [Nodejs] 记录一个小坑:Can't set headers after they are sent
- node递归属性目录结构
- node递归属性目录结构
- 我们为什么要看《超实用的Node.JS代码段》
- 五子棋(围棋) canvas node html5 js
- 我们为什么要看《超实用的Node.JS代码段》