两两交换链表中的节点
2017-03-27 16:19
344 查看
描述
笔记
数据
评测
给一个链表,两两交换其中的节点,然后返回交换后的链表。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出
解题思路:用数组保存每个结点的地址,然后进行2-1-4-3class Solution {
public:
/**
* @param head a ListNode
* @return a ListNode
*/
ListNode* swapPairs(ListNode* head) {
vector<ListNode *>t;
while(head!=NULL){
t.push_back(head);
head=head->next;
}
if(t.size()==1)return t[0];
for(int i=0;i<t.size();i++){
if(i&1)t[i]->next=t[i-1];
else{
if(i+2>t.size()-1)t[i]->next=NULL;
else if(i+2==t.size()-1)t[i]->next=t[i+2];
else if(i+3<=t.size()-1)t[i]->next=t[i+3];
}
}
return t[1];
}
-6-5进行模拟即可,注意判断奇偶。
笔记
数据
评测
给一个链表,两两交换其中的节点,然后返回交换后的链表。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出
1->2->3->4, 你应该返回的链表是
2->1->4->3。
解题思路:用数组保存每个结点的地址,然后进行2-1-4-3class Solution {
public:
/**
* @param head a ListNode
* @return a ListNode
*/
ListNode* swapPairs(ListNode* head) {
vector<ListNode *>t;
while(head!=NULL){
t.push_back(head);
head=head->next;
}
if(t.size()==1)return t[0];
for(int i=0;i<t.size();i++){
if(i&1)t[i]->next=t[i-1];
else{
if(i+2>t.size()-1)t[i]->next=NULL;
else if(i+2==t.size()-1)t[i]->next=t[i+2];
else if(i+3<=t.size()-1)t[i]->next=t[i+3];
}
}
return t[1];
}
-6-5进行模拟即可,注意判断奇偶。
相关文章推荐
- Swap Nodes in Pairs 链表两两交换节点@LeetCode
- 451. 两两交换链表中的节点(swap-nodes-in-pairs)(c++)----lintcode面试题之链表
- 两两交换链表中的节点
- Java实现-两两交换链表中的节点
- 两两交换链表中的节点
- [LintCode 451] 两两交换链表中的节点(Python)
- 两两交换链表中的节点
- 两两交换链表中的节点-LintCode
- LintCode 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- lintcode——两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 链表两两交换节点
- 两两交换链表中的节点
- LintCode-两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点