索引:[LeetCode] Leetcode 题解索引 (C++/Java/Python/Sql)
Github:
https://github.com/illuz/leetcode
题目:https://oj.leetcode.com/problems/swap-nodes-in-pairs/
代码(github):https://github.com/illuz/leetcode
把一个链表中的每一对节点对换(不能只换值)。
直接模拟即可。
开个前节点来做会比较方便。
用 Python 的异常处理和赋值会很方便。
C++:
class Solution { public: ListNode *swapPairs(ListNode *head) { ListNode *newHead = new ListNode(0); newHead->next = head; ListNode *preNode = newHead, *curNode = head; int cnt = 1; while (curNode != NULL && curNode->next != NULL) { // swap curNode and curNode->next preNode->next = curNode->next; curNode->next = preNode->next->next; preNode->next->next = curNode; // go over two nodes preNode = curNode; curNode = curNode->next; } head = newHead->next; delete newHead; return head; } };
Python:
class Solution: # @param a ListNode # @return a ListNode def swapPairs(self, head): dummy = ListNode(0) dummy.next = head cur = dummy try: while True: pre, cur, nxt = cur, cur.next, cur.next.next # change the position of cur and nxt pre.next, cur.next, nxt.next = nxt, nxt.next, cur # now cur is in the third place except: return dummy.next
[LeetCode] 024. Swap Nodes in Pairs (Medium) (C++/Python)
原文地址:http://blog.csdn.net/hcbbt/article/details/44082329