Leetcode_swap-nodes-in-pairs(c++ and python version)
2014-03-17 19:28
501 查看
地址:http://oj.leetcode.com/problems/swap-nodes-in-pairs/
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.
思路:基本数据结构的操作,WA了几次,还是不熟。要多写写才好。
参考代码:
python参考代码:
把原来的list split成了两个sub list,然后再merge一下,现在回想一个月前用c++实现的没有split的做法好牛逼啊。。。
遇上这样的题一定要冷静
//SECOND TRIALclass Solution {public: ListNode *swapPairs(ListNode *head) { if(!head || !head->next) return head; ListNode *l1 = head, *l2 = head->next; ListNode *p1 = l1, *p2 = l2, *nxt1 = NULL, *nxt2 = NULL; while(p1 && p2) { p1 = p1->next = p2->next; if(p1) p2 = p2->next = p1->next; } p1 = l1; p2 = l2; while(p1 && p2) { nxt1 = p1->next; nxt2 = p2->next; p2->next = p1; if(nxt2) { p2 = p1->next = nxt2; p1 = nxt1; } else break; } return l2; }};
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.
思路:基本数据结构的操作,WA了几次,还是不熟。要多写写才好。
参考代码:
class Solution { public: ListNode *swapPairs(ListNode *head) { if(!head) { return head; } ListNode *p1 = head, *p2 = head->next, *cur=head; if(!p2) { return head; } head = p2; p1->next = p2->next; p2->next = p1; cur = p1; while(p1->next) { p1 = p1->next; p2 = p1->next; if(p2) { p1->next = p2->next; p2->next = p1; cur->next = p2; cur = p1; } } return head; } };
python参考代码:
把原来的list split成了两个sub list,然后再merge一下,现在回想一个月前用c++实现的没有split的做法好牛逼啊。。。
遇上这样的题一定要冷静
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # @param a ListNode # @return a ListNode def swapPairs(self, head): if not head or not head.next: return head p1 = h1 = head p2 = h2 = head.next while p1 and p2: p1.next = p2.next p1 = p1.next if not p1: break p2.next = p1.next p2 = p2.next nxt1 = p1 = h2 nxt2 = p2 = h1 while p1 and p2: nxt1 = p1.next nxt2 = p2.next p1.next = p2 if nxt1: p2.next = nxt1 p1 = nxt1 p2 = nxt2 return h2
//SECOND TRIALclass Solution {public: ListNode *swapPairs(ListNode *head) { if(!head || !head->next) return head; ListNode *l1 = head, *l2 = head->next; ListNode *p1 = l1, *p2 = l2, *nxt1 = NULL, *nxt2 = NULL; while(p1 && p2) { p1 = p1->next = p2->next; if(p1) p2 = p2->next = p1->next; } p1 = l1; p2 = l2; while(p1 && p2) { nxt1 = p1->next; nxt2 = p2->next; p2->next = p1; if(nxt2) { p2 = p1->next = nxt2; p1 = nxt1; } else break; } return l2; }};
相关文章推荐
- LeetCode 24. Swap Nodes in Pairs (Python)
- leetcode Swap Nodes in Pairs python
- 24. Swap Nodes in Pairs Leetcode Python
- leetcode 24 Swap Nodes in Pairs C++
- Swap Nodes in Pairs Leetcode Python
- [leetcode: Python]24. Swap Nodes in Pairs
- leetcode: Swap Nodes in Pairs (C++)
- 【LeetCode-24】Swap Nodes in Pairs(C++)
- **Leetcode_largest-rectangle-in-histogram(c++ and python version)
- 【C++】【LeetCode】24. Swap Nodes in Pairs
- Leetcode_populating-next-right-pointers-in-each-node(updated c++ and python version)
- 【LeetCode with Python】 Swap Nodes in Pairs
- [leetcode]Swap Nodes in Pairs @ Python
- python写算法题:leetcode: 24. Swap Nodes in Pairs
- leetcode 【 Swap Nodes in Pairs 】python 实现
- 【Leetcode】【python】Swap Nodes in Pairs
- leetcode之24. Swap Nodes in Pairs(C++实现&链表实现和整体测试)
- leetcode_24. Swap Nodes in Pairs C++
- [C++]LeetCode: 109 Swap Nodes in Pairs (交换相邻节点位置)
- [leetcode]Swap Nodes in Pairs @ Python