LeetCode - Swap Nodes in Pairs
来源:互联网 发布:加工中心半圆编程范例 编辑:程序博客网 时间:2024/06/13 02:35
Given a linked list, swap every two adjacent nodes and return its head.
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.
http://oj.leetcode.com/problems/first-missing-positive/
Solution:
If length is 0 or 1, return head. assume there is ...->node1->node2->node3->..., what we want is ...->node2->node1->node3->...
https://github.com/starcroce/leetcode/blob/master/swap_nodes_in_pairs.cpp
// 24 ms for 55 test cases/** * 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) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. if(head == NULL || head->next == NULL){ return head; } ListNode *node1 = head; ListNode *node2 = node1->next; // prev is the last node of the swapped list ListNode *prev = NULL; while(node2 && node2->next){ ListNode *tmp = node2->next; node2->next = node1; node1->next = tmp; // if at the start if(prev == NULL){ head = node2; prev = node1; } else{ prev->next = node2; prev = node1; } node1 = node1->next; node2 = node1->next; } // length = 2 if(prev == NULL){ head = node2; node2->next = node1; node1->next = NULL; return head; } // length is odd if(node2 == NULL){ return head; } // the last swap node2->next = node1; node1->next = NULL; prev->next = node2; return head; }};
0 0
- LeetCode:Swap Nodes in Pairs
- LeetCode: Swap Nodes in Pairs
- [Leetcode] Swap Nodes in Pairs
- LeetCode : Swap Nodes in Pairs
- [LeetCode] Swap Nodes in Pairs
- Leetcode: Swap nodes in pairs
- [LeetCode]Swap Nodes in Pairs
- [LeetCode]Swap Nodes in Pairs
- LeetCode-Swap Nodes in Pairs
- LeetCode - Swap Nodes in Pairs
- LeetCode | Swap Nodes in Pairs
- 【leetcode】Swap Nodes in Pairs
- Leetcode: Swap Nodes in Pairs
- LeetCode - Swap Nodes in Pairs
- 【LeetCode】Swap Nodes in Pairs
- Leetcode: Swap Nodes in Pairs
- Leetcode Swap Nodes in Pairs
- LeetCode Swap Nodes in Pairs
- Codeforces 382 C. Arithmetic Progression
- 实现Com连接点产生异常(0x80020010 无效的被呼叫方)解决办法
- W3A SCAN 开发过程记录
- Websocket On Bash
- 搜索引擎网页快照工作原理
- LeetCode - Swap Nodes in Pairs
- 网站投票是什么
- LeetCode(108)Convert Sorted Array to Binary Search Tree
- [Tips:2]Chrome浏览器不支持小于12px的字体
- ubuntu12 安装Pig version 0.12.0
- 一种破解静态链接库(.lib)的简单方法
- 【数学基础】取石子游戏(二)
- [unity3d]导出安卓版设置
- hdu 3081 二分+最大流