LeetCode 24:兩兩交換鏈表中的節點(Swap Nodes in Pairs)解法彙總

文章目錄


更多LeetCode題解

My Solution

由於嘗試交換未成功,所以使用了一種討巧的方法:新建一個List,向這個List內添加結點。

struct ListNode {
	int val;
	ListNode *next;
	ListNode(int x) : val(x), next(NULL) {}
};

class Solution {
public:
	ListNode* swapPairs(ListNode* head) {
		if (!head || !head->next) {
			return head;
		}
		ListNode* p = head;
		ListNode* q = head->next;
		ListNode resHead(0);
		ListNode* pres = &resHead;
		while(true)
		{
			ListNode* pl1 = new ListNode(ListNode(q->val));
			ListNode* pl2 = new ListNode(ListNode(p->val));
			pres->next = pl1;
			pres->next->next = pl2;
			pres = pres->next->next;
			if (!q->next) {
				break;
			}
			else if (q->next && !q->next->next) {
				ListNode* pl3 = new ListNode(ListNode(q->next->val));
				pres->next = pl3;
				break;
			}
			else {
				p = q->next;
				q = p->next;
			}
		}
		return resHead.next;
	}
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章