每天坚持写几道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;
}
|
近期评论