leetcode 题目:24. Swap Nodes in Pairs

每天坚持写几道leetcode
今天的题目是23,24打卡链表,medium难度

最近几天有点懒散,对leetcode有些放松了,但是尝试了写几道medium题目,加油坚持住

描述:Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
例子:

1
2
3
4
5
6
7
Input:
[
1->4->5,
1->3->4,
2->6
]
Output: 1->1->2->3->4->4->5->6

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
ListNode* Solution23::compare(ListNode* l1,ListNode* l2)
{
if(l1 == nullptr)return l2;
if(l2 == nullptr)return l1;
ListNode *res = new ListNode(-1);
ListNode *_res = res;
ListNode* p = l1;
ListNode* q = l2;
while(p != nullptr &&q != nullptr)
{
if(p->val < q->val)
{
res->next = p;
p = p->next;
}
else if(p->val > q->val)
{
res->next = q;
q = q->next;
}
else
{
res->next = p;
p = p->next;
res = res->next;
res->next = q;
q = q->next;
}
res = res->next;

}
if(q != nullptr)
res->next = q;
if(p != nullptr)
res->next = p;
return _res->next;

}

ListNode* Solution23::mergeKLists(vector<ListNode*>& lists)
{
if(lists.size() == 0)
return nullptr;
ListNode* res = lists[0];
int i= 1;
while(i < lists.size())
{
ListNode *temp = lists[i];
res = compare(res,temp);
++i;
}
return res;

}


题目:24. Swap Nodes in Pairs

描述:Given a linked list, swap every two adjacent nodes and return its head.
例子:

1
Given 1->2->3->4, you should return the list as 2->1->4->3.

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ListNode* Solution24::swapPairs(ListNode* head)
{
ListNode *res = new ListNode(-1);
res->next = head;
ListNode *_res = res;
while(_res->next !=NULL && _res->next->next != NULL)
{
ListNode *p = _res->next;
_res->next = p->next;
p->next = _res->next->next;
_res->next->next = p;
_res = _res->next->next;
}
return res->next;

}